不才其实在去年使用过一次anaconda做过作业,放假之后就卸载掉了,如今再次使用却遇到如此棘手的问题。本来以为网络上的博客已经够用了,但发现好像并不能解决我的问题。我最终的解决方案也是瞎试出来的。
我在PC上安装完Anaconda individual windows 64版本后,新建了一个内置python3.8的新环境,主要是导入numpy、TensorFlow等计算库,但是不管是在prompt里还是jupyter里,运行导入库的命令(比如import numpy),都会出现以下错误:
前辈们的经验博客固然多,但我拜读之后仍未解决我的问题。既然是摸爬滚打,不经意间尝试成功的,我就不赘述了,各位可以参考一下。
我静下心来想过,既然是第三方库导入的时候总是失败,但我确确实实是在对应环境下使用了conda install [库名]命令来安装库。所以有可能是jupyter和prompt在import的时候选错了路径。
那这个可能就与site-packages所在路径有关了,但是我电脑接触python也有两三年了,前前后后装过7、8次python,很多路径有时又是乱设置的,所以出现路径上的混乱应该是个关键点。
import sys
sys.path
我电脑上的情况是这样的:
# prompt中运行结果
['',
'D:\\Anaconda\\python38.zip',
'D:\\Anaconda\\DLLs',
'D:\\Anaconda\\lib',
'D:\\Anaconda',
'C:\\Users\\spankzilla\\AppData\\Roaming\\Python\\Python38\\site-packages',
'D:\\Anaconda\\lib\\site-packages',
'D:\\Anaconda\\lib\\site-packages\\win32',
'D:\\Anaconda\\lib\\site-packages\\win32\\lib',
'D:\\Anaconda\\lib\\site-packages\\Pythonwin']
# jupyter中运行结果
['D:\\Projects\\Jupyter\\data visualization',
'D:\\Anaconda\\envs\\python3\\python38.zip',
'D:\\Anaconda\\envs\\python3\\DLLs',
'D:\\Anaconda\\envs\\python3\\lib',
'D:\\Anaconda\\envs\\python3',
'',
'C:\\Users\\spankzilla\\AppData\\Roaming\\Python\\Python38\\site-packages',
'D:\\Anaconda\\envs\\python3\\lib\\site-packages',
'D:\\Anaconda\\envs\\python3\\lib\\site-packages\\win32',
'D:\\Anaconda\\envs\\python3\\lib\\site-packages\\win32\\lib',
'D:\\Anaconda\\envs\\python3\\lib\\site-packages\\Pythonwin',
'D:\\Anaconda\\envs\\python3\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\spankzilla\\.ipython']
# 注意到一个奇怪的不应该存在的路径:'C:\\Users\\spankzilla\\AppData\\Roaming\\Python\\Python38\\site-packages'
# 很可能就是因为先从这个路径下去导入库,才导致问题出现
# 各在prompt和jupyter里运行以下命令,把类似这种的令给删除掉
sys.path.remove('C:\\Users\\spankzilla\\AppData\\Roaming\\Python\\Python38\\site-packages')
import numpy # 尝试自己出问题的库名即可,不一定是numpy
反正我到此我的问题就解决了,系统也不再报错[WinError 193]了。
想法:Numpy版本或其他东西存在不兼容,其实说起来逻辑也是有的,在报错信息中,出现了import numpy as np这条命令
解决方法:比如numpy是1.18.3 卸载升级为1.18.4解决的问题pip install --upgrade numpy
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
paddlepaddle 2.0.1 requires numpy<=1.19.3,>=1.13; python_version >= "3.5" and platform_system == "Windows", but you have numpy 1.20.1 which is incompatible.
我在upgrade库numpy时,丢出的error信息果然再次验证了以上猜想。于是,再精准卸载安装对应的numpy版本
pip uninstall numpy
pip install numpy==1.19.0
问题解决。
从表面看是site-packages路径上包含了不该包含的文件路径,但是sys.path.remove(“…”)只是在一次编译起作用。所以一劳永逸的方法应该是把出问题的site-packages路径里的第三方库全部升级到新版本,以此解决不兼容的问题。