質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

13347閲覧

pythonファイルでimport cv2 ができない ModuleNotFoundError: No module named 'cv2'

teihen

総合スコア0

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/18 06:40

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

python初心者です。
コマンドプロンプトでpip install opencv-python opencv-contrib-pythonを行い、
python対話モードではimport cv2 できたのですが、
atomで作成したpythonファイルではimport cv2ができません

発生している問題・エラーメッセージ

ModuleNotFoundError: No module named 'cv2'

該当のソースコード

import cv2

試したこと

コマンドプロンプトでpython対話モード下で
import cv2
print(cv2)
→'C:\Users\ユーザー名\Anaconda3\envs\trim\lib\site-packages\cv2\cv2.cp39-win_amd64.pyd'>

エディタで以下のpythonファイルを作成
import sys
sys.path.append("'C:\Users\ユーザー名\Anaconda3\envs\trim\lib\site-packages\cv2")
import cv2

実行
同様にModuleNotFoundError: No module named 'cv2'が出ました。

("'C:\Users\ユーザー名\Anaconda3\envs\trim\lib\site-packages")
↑のパスはsys.pathにすでに入っていました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
python = 3.9.1(anaconda3で仮想環境を作成)
OS:Windows10 64bit
イメージ説明
sys.pathにあったパス

'C:\Users\ユーザー名\Anaconda3\lib\site-packages'

の中身は以下のようでした。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/02/18 06:51

import sys import pprint pprint.pprint(sys.path) を、 ・対話モードで実行した場合 ・「*.py」に書いて実行した場合 (ModuleNotFoundError: No module named 'cv2' が出るのと同じ実行方法) で表示される結果を比べて、違いはありませんか?
jbpb0

2021/02/18 06:53

質問読み返したら、sys.path の確認は既に行ったのですね 失礼しました 対話モードと「*,py」ファイル実行で、sys.path には違いが無いのに、import できたりできなかったりするのですか?
teihen

2021/02/18 07:05

対話モードで実行 Python 3.9.1 (default, Dec 11 2020, 09:29:25) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> import pprint >>> pprint.pprint(sys.path) ['', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\python39.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages'] .pyで実行 ['C:\\Users\\ユーザー名\\dome_python', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2', 'C:\\Users\\ユーザー名\\Anaconda3\\python38.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\lib', 'C:\\Users\\ユーザー名\\Anaconda3', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\Pythonwin'] 回答本当にありがとうございます! 上記のようになりました。.pyだと仮想環境を認識していない?ようです。 どのようにすればよいか、もしよろしければご教授お願いします。
ppaul

2021/02/18 07:07

> conda activate trim の後に、 > python myfile.py とやっても、 ModuleNotFoundError: No module named 'cv2' が出ますか?
jbpb0

2021/02/18 07:26 編集

「*.py」を実行する際に、 > sys.path.append("'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2") をやってはダメです そこにあるのは > →'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2\\cv2.cp39-win_amd64.pyd'> から分かるようにPython 3.9用のOpenCVですが、「*.py」を実行する際に使われてるPythonは、 > .pyで実行 (中略) 'C:\\Users\\ユーザー名\\Anaconda3\\python38.zip', から分かるようにPython 3.8ですので、3.9用のOpenCVをimportすることはできません (sys.pathに含めても) それに、cv2があるsite-packagesディレクトリがsys.pathに入ってれば、そこにcv2ディレクトリがあれば、import cv2できるはず 対話モードのsys.pathに > 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2', が入ってなくても、 > 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages' が入ってれば、対話モードではimport cv2できるはず
teihen

2021/02/18 07:21 編集

ありがとうございます!やってみます!
teihen

2021/02/18 07:35

ppaulさん返信ありがとうございます!そうですね。同様にエラーが出ていました。
ppaul

2021/02/18 07:47

念のための確認ですが、myfile.pyなどの名前のファイルをダブルクリックして実行はしていませんよね。それをやると、condaでどのpythonをactivateしているかとは無関係に別のpythonが起動されるので、cv2をimportd出来ない可能性は高くなります。
teihen

2021/02/18 07:48

jbpb0さん、最初の返信の .pyで実行 ['C:\\Users\\ユーザー名\\dome_python', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2', 'C:\\Users\\ユーザー名\\Anaconda3\\python38.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\lib', 'C:\\Users\\ユーザー名\\Anaconda3', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\Pythonwin'] に'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2' が含まれていたのはコントロールパネルから環境変数にPAITHONPATHを追加してそこに 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2' を入れたからだとわかりました。 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2' ではなく 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages' に変更してみたところ File "cv2test.py", line 1, in <module> import cv2 File "C:\Users\tokudome\Anaconda3\envs\trim\lib\site-packages\cv2\__init__.py", line 5, in <module> from .cv2 import * ModuleNotFoundError: No module named 'cv2.cv2 という異なるエラーが出ました。 jbpb0さんの二つ目の返信を解釈するに、opencv-python、opencv-contrib-pythonのバージョンをpython3.8に適したバージョンにダウングレードしてみたらよいでしょうか? 解釈違いでしたら申し訳ありません。 すみません、バイトに行ってくるので次の返信がしばらく遅くなってしまいます。 お二方ほんとにありがとうございます!
jbpb0

2021/02/18 08:00

> 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2' ではなく 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages' に変更してみたところ いやだから、そういうsys.pathに何か追加するのは、ダメなんですって (方法が環境変数を使うのでも) > 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages' 以下にあるのは、先に書いたようにPython 3.9用のもの それを、今「*.py」実行で動いてるPythin 3.8で使うことはできないのです 3.8用のものは > 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages', にあります 今は、OpenCV(cv2ディレクトリ)がそこに無いから、importできませんが 対策としては二通りあります ・Python 3.8にOpenCVを入れる ・「*.py」実行でPython 3.9が使われるようにする 後者は、ppaulさんが書いた方法です (先にconda activate trimを実行しておく)
jbpb0

2021/02/18 08:03

環境変数 PYTHONPATH を削除 まずはそこから
jbpb0

2021/02/18 08:07

conda activate trim をやってから、 import sys import pprint pprint.pprint(sys.path) を書いた*.pyファイルを実行したら、結果はどうなりますか? あと、逆に、対話モードでは、どのようにして仮想環境を有効にしているのですか? conda activate trim ではないのかな?
yuki23

2021/02/18 09:03

>jbpb0さん 回答は回答欄でお願いします
teihen

2021/02/19 08:17 編集

手を焼かせてしまって本当に申し訳ないです。 まず追加した環境変数は削除しました。 base環境でpip install opencv-pythonし、trimで.pyを実行したら無事エラー起こりませんでした。 おかげさまで課題であったpythonファイルからのimport cv2に成功しました!ありがとうございます! conda create -n trim python で仮想環境trimを作り、conda activate trimした後、 trim環境でpip install opencv-pythonを行って、今回の問題に直面していたのですが、 仮想環境というものをよく理解できていなかったのかもしれないです。でもこれだとbase環境下でinstallしたパッケージしか使えない?そういうものなのでしょうか。 今までもconda activate trimしてから実行していたのですが、もう一度改めて、、 (trim) C:\Users\ユーザー名\dome_python>py pprint_path.py ['C:\\Users\\ユーザー名\\dome_python', 'C:\\Users\\ユーザー名\\Anaconda3\\python38.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\lib', 'C:\\Users\\ユーザー名\\Anaconda3', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\Pythonwin'] 一応対話モードも載せます (trim) C:\Users\ユーザー名\dome_python>python Python 3.9.1 (default, Dec 11 2020, 09:29:25) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> import pprint >>> pprint.pprint(sys.path) ['', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\python39.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2'] 関係ないかもですがbaseでも同様に C:\Users\ユーザー名\dome_python>py pprint_path.py ['C:\\Users\\ユーザー名\\dome_python', 'C:\\Users\\ユーザー名\\Anaconda3\\python38.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\lib', 'C:\\Users\\ユーザー名\\Anaconda3', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\Pythonwin'] 対話モードで C:\Users\ユーザー名\dome_python>python Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 Warning: This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.io/activation Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> import pprint >>> pprint.pprint(sys.path) ['', 'C:\\Users\\ユーザー名\\Anaconda3\\python38.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\lib', 'C:\\Users\\ユーザー名\\Anaconda3', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\lib\\site-packages\\Pythonwin'] warningが出てますがanacondaのpythonをコマンドプロンプトで使ってるから出てると思うのですがこれが今回の問題に関係はしてたりするのでしょうか。
jbpb0

2021/02/19 09:14

conda activate trim した後、 py pprint_path.py ではなく、 python pprint_path.py では、どうなりますか?
teihen

2021/02/19 09:34

(trim) C:\Users\ユーザー名\dome_python>python pprint_path.py ['C:\\Users\\ユーザー名\\dome_python', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\python39.zip', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\DLLs', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages', 'C:\\Users\\ユーザー名\\Anaconda3\\envs\\trim\\lib\\site-packages\\cv2'] でました!こうすれば、仮想環境のパッケージを使えるんですね!本当にありがとうございます! 今まで、ずっとpyで実行してました。python .pyと py .pyで異なるのですね。知りませんでした! python .pyで実行するようにします。 これで問題は完全に解決しました! jbpb0さん!ppaulさん本当に本当にありがとうございました!
guest

回答2

0

opencv-pythonがインストールされているpythonは、

C:\Users\ユーザー名\Anaconda3\envs\trim\python.exe

なのですね。

ATOMで動いているpythonは

python

1import sys 2prinbt(sys.executable)

でわかります。

違っている場合は、【解説】PythonをAtom上で実行する方法のPATHを設定する方法に従って上記のpathを設定してみてください。

投稿2021/03/02 05:54

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python対話モードではimport cv2 できたのですが、

atomで作成したpythonファイルではimport cv2ができません

対話モードと「*,py」ファイル実行で、sys.path に何か違いがあるはずです
そこ確認して、環境を合わせてください

投稿2021/02/28 10:29

jbpb0

総合スコア7651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問