PILがインストールされているはずなのに下のエラーメッセージが出ます。
画像の文字を認識させて文字列を表示させるプログラムを作ろうとしたところ、モジュールが読み込まれませんでした。
python3.9.7
1 from PIL import Image 2ModuleNotFoundError: No module named 'PIL'
pillowのバージョンは9.1.1です。
初めて質問するので解決するのにどんな情報が必要なのかわかりません。「この情報が無いとわからない」などありましたらそれも教えてください。
急用で外に出ていて確認が遅れてしまい申し訳ありませんでした。
追記:PILはanaconda3に入っていました。使っているパソコンはwindows11です。
どのような操作をした結果か…というのがよく理解ができませんでしたが、確かにpythonがanacondaとAppdataの二つに存在していました。
PILはどのようにインストールしましたか。
エラーの出たときの操作について追記してください。
作業環境についての情報を教えてください。 (Windows、 Macなど)
回答はここに書くのでなく、質問を編集して追記してください。
「エラーの出たときの操作について追記してください。」この情報も必要です。
どのような操作をしたけっかのエラーですか。
こういう問題は、大抵 pythonが複数インストールされていて発生します。
その切り分けが必要です。
pythonで
from PIL import Image
がうまくいかない状態で、下記のpythonコードを実行してください
import sys
import pprint
pprint.pprint(sys.path)
たくさんパスが表示されますが、その中にパスの最後が「site-packages」のものがあるはずです (複数あるかも)
そのパスの場所を調べてください
そこに、「PIL」という名前のディレクトリと、名前が「Pillow-」で始まるディレクトリはありますでしょうか?
無ければインポートできません
> PILはanaconda3に入っていました。
from PIL import Image
がうまくいかない状態で、使われてるpythonの絶対パスを調べてみてください
https://hawk-tech-blog.com/python-learn-get-full-path-of-interpreter/
(ユーザー名等の個人情報は伏せ字にして)
上記で調べたpythonの絶対パスは、anacondaのものでしょうか?
site-packagesのパスの先にはありませんでしたが、ほかの所に入っていました。これをsite-packagesの所へ入れたらインポートできるようになりますか?
python の絶対パスは
C:\Users\(名前)\anaconda3\python.exeでした。
> これをsite-packagesの所へ入れたらインポートできるようになりますか?
それをやるとトラブルの原因になるので、やらない方がいいです
> python の絶対パスは
C:\Users\(名前)\anaconda3\python.exeでした。
より、使ってるpythonはanacondaのですよね
そのanacondaのpythonのsys.pathにPILがあるのかを確認したら、
> site-packagesのパスの先にはありませんでした
だったので、anacondaにはPILは入ってないことになりますが、それと質問に書かれてる
> PILはanaconda3に入っていました。
は矛盾しますよね
状況がよく分からないので、下記を教えてください
・現状で「PIL」という名前のディレクトリと、名前が「Pillow-」で始まるディレクトリが実際にある「ほかの所」のパス
・anacondaのpythonで「pprint.pprint(sys.path)」を実行した結果 (ユーザー名等は伏せ字にしていいですが、それ以外はできるだけ省略しないでください)
調べたところPILが二つ入っているのが分かりました。
"C:\Users\名前\kivy_venv\Lib\site-packages\PIL"
"C:\Users\名前\anaconda3\Lib\site-packages\PIL"
anacondaとkivy(?)に入っているそうです
> 調べたところPILが二つ入っているのが分かりました。
"C:\Users\名前\kivy_venv\Lib\site-packages\PIL"
"C:\Users\kota1\anaconda3\Lib\site-packages\PIL"
「C:\Users\kota1\anaconda3\Lib\site-packages」には、「名前が「Pillow-」で始まるディレクトリはありますか? (そこに「PIL」という名前のディレクトリがあるのは、上記から分かりました)
あと、anacondaのpythonで下記を実行した結果を教えてください (ユーザー名等は伏せ字にしていいですが、それ以外はできるだけ省略しないでください)
import sys
import pprint
pprint.pprint(sys.path)
Pillow-9.1.1.dist-info というファイルがありました。
anacondaのpythonとはどういうことでしょうか...?anacondaでVScodeを起動すればいいんでしょうか?
> anacondaのpythonとはどういうことでしょうか...?
「anacondaのpython」とは、
> python の絶対パスは
C:\Users\(名前)\anaconda3\python.exeでした。
のpythonのことです
別の言い方をすると、「C:\Users\名前\kivy_venv」の下のpythonでは無いもの、という意味です
> Pillow-9.1.1.dist-info というファイルがありました。
つまり、「C:\Users\kota1\anaconda3\Lib\site-packages」には、「PIL」という名前のディレクトリと、名前が「Pillow-」で始まるディレクトリがあるのですね
それなら、「anacondaのpython」(C:\Users\(名前)\anaconda3\python.exe)でインポートできるはずなのですが、なぜできないか不思議です
それで、「anacondaのpython」の「sys.path」を伺ってます
>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
'C:\\Users\\名前\\anaconda3\\python39.zip',
'C:\\Users\\名前\\anaconda3\\DLLs',
'C:\\Users\\名前\\anaconda3\\lib',
'C:\\Users\\名前\\anaconda3',
'C:\\Users\\名前\\AppData\\Roaming\\Python\\Python39\\site-packages',
'C:\\Users\\名前\\anaconda3\\lib\\site-packages',
'C:\\Users\\名前\\anaconda3\\lib\\site-packages\\locket-0.2.1-py3.9.egg',
'C:\\Users\\名前\\anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\名前\\anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\名前\\anaconda3\\lib\\site-packages\\Pythonwin']
> python の絶対パスは
C:\Users\(名前)\anaconda3\python.exeでした。
で調べた「sys.path」に
> 'C:\\Users\\名前\\anaconda3\\lib\\site-packages'
が含まれてて、そこには「PIL」という名前のディレクトリと、名前が「Pillow-」で始まるディレクトリがある
> python の絶対パスは
C:\Users\(名前)\anaconda3\python.exeでした。
で
> from PIL import Image
ができない
ということですか
上記の条件ならインポートできるはずなのですが、変だなぁ
【追記】
> C:\Users\名前\anaconda3\Lib\site-packages\PIL
に「__init__.py」という名前のファイルはありますでしょうか?
ありました。
> pillowのバージョンは9.1.1です。
https://anaconda.org/anaconda/pillow
を見たら、condaで入れられるのは現状9.0.1までしかリリースされてません
https://pypi.org/project/Pillow/
を見たら、pipで入れられるのは現状9.1.1がリリースされてます
もしかして、anacondaにpipでpillowをインストールしたのでしょうか?
もしそうなら、その時に環境が壊れたのかも
anacondaは、たしか普通にインストールしたら元々pillowが入ってるので、追加でインストールする必要はなかったように思います
おそらくそれな気がします。pipでインストールしてはいけないことを最近知りました。
> pipでインストールしてはいけないことを最近知りました。
pillowは該当しませんが、condaでは入れられないものもあるので、pipで入れないとならない場合もあります
その時は、condaで仮想環境を作って、その仮想環境を有効にした状態でpipで入れることをお勧めします
そうすれば、もしpip install...で環境が壊れても、その仮想環境を捨てるだけですみます (anacondaの再インストールの必要は無い)