我试图开始用WSL编写Python,但是整个体验非常混乱。要安装软件包,我知道我想使用pip3,但是任何pip3命令都会导致
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
我的解决方法是使用以下命令进行安装,该命令已经有效:
python3 -mpip install --user somePackageName
我真正的困惑是来自which
命令没有找到上述命令安装的软件包的事实。但是,我知道它们在那里,就像我运行“ python3 -mpip Frozen”时出现的一样。这是因为它们是本地安装的吗?
(此外,如果有人在WSL中拥有Python和pip的经验,并且可以考虑如何配置我的Python环境,以避免此类问题,那将是非常有帮助的。)
谢谢!
答案 0 :(得分:0)
尝试:python -m site
(也许用python
代替python3
,等等)
您应该在下面的代码段中得到简短的输出,
从Windows:
sys.path = [
'<your current working directory>',
'C:\\Python38a2\\python38.zip',
'C:\\Python38a2\\DLLs',
'C:\\Python38a2\\lib',
'C:\\Python38a2',
'C:\\Python38a2\\lib\\site-packages',
]
从WSL:
sys.path = [
'<your current working directory>',
'/usr/lib/python37.zip',
'/usr/lib/python3.7',
'/usr/lib/python3.7/lib-dynload',
'/home/<username>/.local/lib/python3.7/site-packages',
'/usr/local/lib/python3.7/dist-packages',
'/usr/lib/python3/dist-packages',
]
这就是您要查找已安装软件包的地方。
这里的顺序是导入优先级(较早的条目“紧随其后”)
对于pip install
版软件包,通常需要查看site-packages
目录。
对于<package manager> install
版软件包,通常需要在dist-packages
目录中查找。
最后,which
通常用于在$PATH
环境变量上查找可执行文件(并且,至少对我来说,要求它们具有显示的可执行位在结果中。)
在这里,您正在寻找Python可以导入的不同的模块或包。换句话说,$PYTHONPATH
上的模块或软件包。
这是两种不同的“路径”。
在您的解释器内部,$PYTHONPATH
映射到sys.path
,而$PATH
映射到os.environ['PATH']
。