LoginSignup
3
0

More than 3 years have passed since last update.

Python3でOpencv4をインストールしたのにimportできない時の最後の砦

Last updated at Posted at 2019-06-11

後輩がPython3とOpenCV4をインストールしたはずなのにimportできないとのことだったので、その原因と対処法の備忘録

1 導入環境

今流行りのAnacondaなどをしようせず、そのままのPythonでのOpenCVの実装を試みたそうです。
・MacOS Mojabe ver.10.14.4
・Python 3
・OpenCV 4

2導入方法

これに関しては今回の本題ではないので触り程度を紹介。
後輩はbrewでインストールしたとのことだったのでその手順を書いておく。

brew(web上のパッケージマネジャ)をPCにインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Python3のインストール

$ brew install Python3

Opencv3のインストール

$brew install opencv4

これで導入は完了

3なぜ動かないのか

そもそも、なぜインストールが完了しているはずなのに、importができないのか。
考えうる原因に以下の点があげられる。

・そもそもインストールできてない
・versionが最新じゃない
・import文が間違えている
・同じバージョンのPythonまたはOpenCVがPC内に混在している

これらが起こる原因の詳細と確認方法、及び対処法をまとめていく

4原因と対処法(基礎編)

そもそもインストールできていない

原因:ターミナルがエラー吐いているのに気づいてない、コマンドがおかしい
対処法:下記を実行していこう

Python3が正しくインストールされているか確認

$ Python3 -V

下記のように出てきたらOK
HogeHogenoMacBook-Air:~ PomePome$ Python3 -V
Python 3.7.3

こんなふうにで出てきたらx
-bash: Python3: command not found

・入力するコマンドが正しくタイプできているか(スペルミス,空白ミスチェック)
・コマンドが通っているか(-bashが出てたらミスしているってこと)
などを確認しながら2の導入を行ってほしい

versionが最新じゃない

原因:とくにopencvの方で起こるエラー、普通インストールしたら最新ver.が入ると思うけど旧ver.が入ることがあるらしい、(デバック側のエラーなので起きた以上は対処するしかない)
対処法:バーションを最新にする

Python3のversionアップデート

$ brew upgrade Python3

すると、brewのアップデートが残っていれば自動で行われ、その後にPythonのアップデートを行ってくれる
アップデートがない(最新のver.だった)場合
Error: python3 バージョン名 already installedと言われるだけなので無視して良い。

OpenCV4のversionアップデート

$ brew upgrade opencv

同様に、brewのアップデート→opencvのアップデートを自動で行ってくれる、最新だった場合のエラーも上記通りなので割愛。

import文が間違っている

原因:import文が間違っている
対処法:import文が間違っている

間違っていないimport文

import cv2

と、少しふざけたけどこういうミスも全然ありうるので、きちんと確認してほしい。

ここまでで簡単なエラーは紹介できたので一度プログラムを動かしてみてほしい。できなかった場合、最後の砦のさらに最後に進もう。

5原因と対処法(最後の砦)

python3を複数個インストールしている、ないしpathが通せていない(リンクづけできていない)

原因:brewでインストールするのとは別で、他のパッケージマネジャ(公式webサイト、pip、anacondaなど)からPythonをインストールしていた。
対処法:複数個存在しているPython、OpenCVを全て削除し一つに絞ってインストールし直す

PythonでOpenCVを利用する際、これら2つのリンクづけが必要である(「Python」というテーブルに、「Opencv」という本がどこにしまってあるかを書き込んであげるイメージ)
昔は、手動で行っていた作業だが今は同じパッケージサイトを使えば自動で行ってくれる。逆に言えば違うパッケージサイトを使うと行ってくれないわけだ。

Pythonの位置を確認する

which Python3

Pythonがどこにあるかを確認する。
/usr/local/bin/Python3
ここにあれば基本問題ない。
これが
/ライブラリ/・・・
とか出たら、Pythonが複数インストールされている可能性が出てくる

自分が他にPythonを所持しているか思い出す。
上記の2で示しているのはHomeBrewというパッケージマネジャを用いたPythonのインストールの方法である。これとは別でPythonをインストールしている場合は一旦全てのPythonインストールデータをアンインストールし、再度いれたいものだけをインストールし直そう。

6アンインストール手順

下記にはいくつかのアンインストール方法を明記しておくが、ここにないものは調べれば出てくるのでそちらを調べてほしい。

①HomebrewでインストールしたPythonのアンインストール

何もわからず、とりあえず僕に騙されインストールしてしまった迷える子羊たちはここでアンインストールしましょう。

❶ターミナルに以下を記載してopencvをアンインストール

$ brew uninstall opencv

❷ターミナルに以下を記載してpythonをアンインストール

$ brew uninstall --ignore-dependencies python3

これでアンインストールは完了。7に移動しましょう。

②公式HPでインストールしたPythonのアンインストール

"アプリケーション"フォルダにあるPythonの削除

最初にFinderの中のアプリケーション内にあるPythonフォルダを削除。バージョンによっては複数個あるので、全部削除。

"Python.framework"フォルダを全て削除

ターミナルで以下を記述する

$ sudo rm -rf  /Library/Frameworks/Python.framework

シンボリックリンクを削除

仮にアンインストールが完了したとしても、それぞれを繋いでいたリンク(紐)は残ったままになってしまい、色々と悪さするので消してしまいましょう。
ちなみに、これはちょっと面倒臭いです。

❶ターミナルに次のコマンドを入力する。

$ ls -l /usr/local/bin | grep Python

すると、ずらずらとリストが表示される。

❷以下のコマンドをターミナルに入力する。

$ cd
$ cd /usr/local/bin
$ open .

すると、また別でずらずらとリストが表示される。

一見するとわけがわからないと思いますが、❶のリストの末尾に表示されている名称と、❷のリストで表示された名称を見比べれば、同じものがあるはずです。
❷のリストからこれらを全て削除する。

.bash_profileの中身を修正

公式のホームページからインストールすると、.bash_profileにPathを書き込み、他でインストールしたPythonより、これを優先的に参照するようになります。アンインストールするのでこれも書き直す必要がある。

❶ターミナルに以下を記述

$open -a Xcode ~/.bash_profile

するとxcodeでテキストファイルが開かれると思います。
そこに書いてある

# Setting PATH for Python 3.5
# The original version is saved in .bash_profile.pysave
PATH=”/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}”
export PATH

この記述を削除

❷ターミナルに以下を記述

$ rm .bash_profile.pysave

えらいことに、.bash_profileが消えてしまった場合ようにバックアップまでも用意してあるので、それも削除するためのコマンド。

作業は以上です。7に進みましょう。

③AnacondaでインストールしたPythonのアンインストール

要望があれば書き足します。

④pipでインストールしたPythonのアンインストール

要望があれば書き足します。

7終わりに

6までのステップが終わっていれば、綺麗にPythonがアンインストールされているはず。この状態から2に戻ってインストールし直してみましょう。
以上で全行程が終了です。import文が通るか試してみましょう。

筆者の後輩はこれが原因だった。
初心者にありがちだが、色々なサイトの色々な方法を試した結果、パソコンの中にそれらの残留物が残ってしまい紐が絡まってしまっているみたいにPC内が無茶苦茶になってしまっている場合がある。
新しい方法を試す前にまずは前のものを綺麗にアンインストールする
サボりがちだがこれは結構大切なことなので覚えておいてほしい。

参考サイト

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0