pipするとインストール済みなのに、importできない場合です。
単純な話ですが、例えば、
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'django'
djangoをimportしようとするとエラーになります。
エラーの内容はそのままですが、モジュールが見つかってません。
そもそもdjangoがないのかなと思って、pipしてみると、
C:\Users\aaa>pip install django
Requirement already satisfied: django in c:\users\aaa\anaconda3\lib\site-packages (3.0)
Requirement already satisfied: sqlparse>=0.2.2 in c:\users\aaa\anaconda3\lib\site-packages (from django) (0.3.0)
Requirement already satisfied: asgiref~=3.2 in c:\users\aaa\anaconda3\lib\site-packages (from django) (3.2.3)
Requirement already satisfied: pytz in c:\users\aaa\anaconda3\lib\site-packages (from django) (2019.3)
already satisfiedなので、「既にあるよ」と言われています。
ということは、単純にパスが通ってないということです。
パスはsys.pathで確認できます
>>> import sys
>>> import path
>>> pprint.pprint(sys.path)
['',
'C:\\Users\\aaa\\Anaconda3\\python37.zip',
'C:\\Users\\aaa\\Anaconda3\\DLLs',
'C:\\Users\\aaa\\Anaconda3\\lib',
'C:\\Users\\aaa\\Anaconda3',
'C:\\Users\\aaa\\Anaconda3\\lib\\site-packages',
'C:\\Users\\aaa\\Anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\aaa\\Anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\aaa\\Anaconda3\\lib\\site-packages\\Pythonwin',
確かに、djangoのパス「django in c:\users\aaa\anaconda3\lib\site-packages (3.0)」がありません。
ここまでわかれば、あとは環境変数にパスを追加してあげるだけです。
sys.path.appendで環境変数に追加できるので、
sys.path.append("c:/users/aaa/anaconda3/lib/site-packages (3.0)")
突っ込めたら再度確認で
>>> pprint.pprint(sys.path)
'c:/users/aaa/anaconda3/lib/site-packages (3.0)'
が追加されていればOKです。
>>> import django
>>> print(django.get_version())
3.0
djangoが使えるようになったことが確認できました。
#誤りパターン
ちなみに、コピペして環境変数に突っ込もうとすると、こんなエラーがでます。
>>> sys.path.append("c:\users\aaa\anaconda3\lib\site-packages (3.0)")
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \uXXXX escape
>>> sys.path.append("c:/users/aaa/anaconda3/lib/site-packages (3.0)")
これは\マークがエスケープなので、\uでエスケープシーケンスと認識されているからです。
sys.path.append("c:\users\aaa\anaconda3\lib\site-packages (3.0)")を
sys.path.append("c:/users/aaa/anaconda3/lib/site-packages (3.0)")にすればOKです。