早上好!
快速总结:我对pip和virtualenv有一个问题。不管我的virtualenv是否被激活,我的pip都会将包安装到venv的站点中--但是当我的venv python在外部读取包时,它会从一个完全不同的文件夹中读取包(详细信息如下),这样我就不能在venv之外为我的python安装包了。我的猜测是,我需要确保pip安装在不同的地方时,在内部或外部的静脉。我似乎找不到我的pip的配置文件,这是指定的,而且我看过的大部分wabpage要么与我的问题无关,要么远远超出了我的脑袋。
一些细节(我还不熟悉使用ubuntu、linux和python的数据,所以如果我遗漏了任何重要信息,请这样说,我将尝试填写缺少的内容):外部venv:
$which python结果:
usr/bin/python和
$which pip给出
/home/username/.local/bin/pip我发现python站点包可以识别它寻找包的位置,所以这是在使用它时的输出(我还包括通知我问题的内容):
$ python
Python 3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0] on linux
>>> import site
>>> print(site.getsitepackages())
['/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages']
>>> import numpy
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'numpy'
>>> exit()
$ pip install numpy
Requirement already satisfied: numpy in ./projectFolder/venv/lib/python3.6/site-packages (1.17.4)纵观目录,我找不到python的站点包目录,但是我可以找到一个dist包(如上面所示),而在venv中有一个站点包,其中pip安装包。
激活我的静脉会产生以下结果:
(venv)$ which python
/home/username/projectFolder/venv/bin/python
(venv)$ which pip
/home/username/projectFolder/venv/bin/pip使用venv下的站点提供:
(venv)$ python
Python 3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0] on linux
>>> import site
>>> print(site.getsitepackages())
Traceback (most recent call last):
File "", line 1, in
AttributeError: module 'site' has no attribute 'getsitepackages'发布于 2020-05-12 20:18:33
virtualenv维护者:https://github.com/pypa/virtualenv/issues/737#issuecomment-319078189很好地描述了这个问题。
我将在此引用他的评论:
问题(据我理解)是,virtualenv实现了自己版本的site.py,该版本没有完全跟踪核心Python版本(这就是上面提到的#355后面的问题--如果您遵循该链接,并链接到从该链接链接到的各种问题,您将得到背景信息)。修复这个问题并不像“同步到核心site.py”那么简单,因为我们需要支持多个Python版本,而且site.py已经在它们之间发生了变化。
https://askubuntu.com/questions/1198457
复制相似问题