python使っててpipでインストール下にも関わらずコード実行するとインストールされてないよと言われてキレそうだった。
割と躓きそうなポイントなので備忘録として残しておきます。
大前提としてpythonを複数バージョン、インストールするのはやめましょう。特にpython触りたてで何もわからないけど、「ネットの記事でこのバージョン使ってたから新しくバージョン入れてみよう」みたいなのは絶対やめたほうがいいです。
僕も詳しくないのであまり詳しくは説明できませんが複数バージョンを扱う技術がないのであればやめましょう。
それでも複数バージョンをインストールしてしまったり、既にインストールしてしまっている場合は、バージョンを一つに絞るか、複数バージョンを使い分ける技術を身につけましょう。
いよいよ本題に入ります。
今回の「pip installしたのにimport error」が起こる原因としては、現在使用しているpythonとpipでインストールされるpythonのバージョンが異なることにあります。なので使用するpythonとpipのインストール先を同じバージョンにしてあげれば問題は解決されます。(もしかしたらほかの原因があるかも)
まずは現状把握から
コマンドプロンプトなどを開き
python -V
で現在使用している(python 〇〇.pyの時に使用される)バージョンを確認できます。
複数のpython環境があるときはpythonの対話モードに入り
import sys sys.executable
と実行するとどのフォルダのpythonを使用しているかを確認できる。
コマンドプロンプトなどで
pip -V
とすればpip install したときにインストールされるpythonのバージョンを確認できる。
ふたつのバージョンが異なっている場合今回の問題が発生します。
原因と現状把握ができたのでいよいよ対処法。
力技です。自分がいらないと思うpythonバージョンをすべて削除してください。
僕の場合はpython -Vでは3.6.5でしたが、pip -Vでは3.8だったので、いらない3.6.5をアンインストールするとpython -Vで3.8.5が使用できるようになりました。
何らかの理由でpythonのバージョンを複数入れておきたいという方は、pythonやの使用するバージョンを指定してバージョンの切り替えを行ったり、pipでインストールするバージョンを指定することでこの問題を解決できます。
僕の場合、pythonのアンインストールをするまではこちらの方法で凌いでいました。
使用するファイルを常に同じpythonバージョンで使用したい場合、そのプログラムファイルの先頭に
#!python3.8
のように自分の使用したいpythonバージョンを書いてやればプログラムを実行した際に指定したバージョンで実行が行えます。
プログラムファイルの実行毎にバージョンを指定したい場合は
py -3.8 〇〇.py
のようにバージョンを書くことにより指定することができます。この書き方は#!python○○よりも優先度が高く、プログラムに#!python3.5と書いてあっても、py -3.8とすればpython3.8で実行されます。
pipのインストール先バージョンを指定したい場合は
py -3.8 -m pip install pandas
のようにしてやればバージョンを指定することができます。
ちなみに、普通に
py -m pip install pandas
とすると、pip -Vで確認したバージョンと同じ場所にインストールされます。
pipでインストールしたライブラリの一覧を見たいときは
pip list
で確認できます。
長くなってしまいましたが以上がpip installしたのにimport errorが出るときの対処法でした。ぶっちゃけ[原因]で述べた理由以外の時にも同じようなエラーが出る可能性はあるのですが、大体はpythonの複数バージョンによるエラーだと思います。今回の方法を試してもエラーが出るのであればご自身でググってください。
他の原因のエラーの解決方法がわかれば追記していきます。
https://tzmi.hatenablog.com/entry/2020/01/13/232021
https://gammasoft.jp/python/python-version-management/