如果安装了pip但无法通过import进行导入的情况
如果在进行pip安装后,已经安装好了,但无法通过import导入的情况。
这是一个简单的例子,例如,
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'django'
当尝试导入Django时,会发生错误。
错误的内容保持不变,即找不到模块。
开始我在想为什么没有安装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)
因为已经满足了,所以被告知「已经存在」。
这意味着仅仅是路径没有通畅。
可以通过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',
确实,在c:\users\aaa\anaconda3\lib\site-packages路径下找不到django(版本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)'
如果有添加的话,那就可以了。
>>> 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)”)就可以了。