LoginSignup
5
8

More than 3 years have passed since last update.

pipするとインストール済みなのに、importできない場合

Last updated at Posted at 2020-05-16

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です。

5
8
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
5
8