python VirtualEnv/Pip正在尝试全局安装程序包

idfiyjo8  于 2023-02-11  发布在  Python
关注(0)|答案(4)|浏览(114)
    • 编辑#2**找到解决方案;见下文。

我正在使用VirtualEnv在Flask中编写一个小应用程序。这已经不是我第一次这样做了,但是这一次和过去两次我都遇到了同样的问题。当我尝试安装一个包时--例如. flask/bin/activate--它总是被全局安装,而不是在VirtualEnv中。奇怪的是,它只发生在Ideactivate之后,并且在那不一致。
也就是说,如果我一次安装所有我需要的东西,甚至偶尔在我deactivate之后,我似乎能够安装所有我需要的东西,但是在一定的间隔之后,它只是 * 停止工作 *,并开始尝试安装到我的全局Python site-packages中。(当然,它这样做时也会请求权限。在我弄明白发生了什么之前,我试图用sudo强制它,我以为是我自己不小心把它带来的,但是没有,它是因为其他原因而全球化的。)
我没有做任何像使用--system-site-packages参数这样有趣的事情,在它发生之前,我没有在我的VirtualEnv配置中更改任何东西。第一次发生时,我认为它是一个侥幸。现在它变得非常令人恼火,因为我没有心情卸载所有东西并每次重新安装它,或者祈祷我会在引导脚本中考虑到我需要的所有东西。
我没有包括任何错误消息,因为它们不是(或者看起来不是)特别有价值;只是requirement already satisfied一遍又一遍地对我大喊大叫。

    • 编辑#1**我稍微筛选了一下这个问题,但是我仍然没有一个解决方案。我在同一个目录中创建了一个新的Flask项目,cd-ed到其中,激活它的VirtualEnv,等等,然后运行which pip。这是新的VirtualEnv的pip--正确的pip。我停用,cd-ed到我的原始项目,激活VirtualEnv,然后运行了which pip,它输出了另一个项目的--新项目的--pip,我对新的测试项目进行了rm -r,返回到原来的,再次运行which pip,它输出了/usr/local/bin/pip,好的。
    • 编辑#2:解决方案**我可能还没有找到确切的原因,但我找到了解决方案。bin/activatebin/pip脚本本身不知何故被修改了,可能是因为意外地同时运行了两个VirtualEnvs(?)。也许这只是巧合,它在以前从未发生过的情况下连续发生了三次。不知道。

cat-ed activate,果然,在第42行

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask2/flask"

代替

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask/flask"

我改变了它,再次运行which pip,得到了正确的结果。尝试安装,得到了一个堆栈跟踪,引导我到bin/pip,发现它的shebang是错误的。改变到正确的路径,一切都完美地工作。

fzsnzjdm

fzsnzjdm1#

我也遇到了同样的问题,对我来说,原因是我的virtualenv在路径中有空格。
将virtualenv移动到一个没有空间的路径解决了这个问题。

56lgkhnf

56lgkhnf2#

如果您重命名了包含ENV - virtual environment目录的项目目录,请尝试清除ENV目录,重新创建virtualenv并将其激活,然后重新安装pip依赖项。
TL-DR;删除虚拟环境,创建新环境,激活它并再次发出pip命令。

wgmfuz8q

wgmfuz8q3#

在我的例子中,我的pip.ini文件已经指定了一个目标值:删除目标解决了问题。

  • 初始管道损坏 *
[global]
index-url = work-artifactory-cloud-api-key
trusted-host = work-artifactory-cloud
proxy = http://work-artifactory-cloud.com:2000/
target = ~/site-packages
  • 固定管道初始化 *
[global]
index-url = work-artifactory-cloud-api-key
trusted-host = work-artifactory-cloud
proxy = http://work-artifactory-cloud.com:2000/

如果你使用的是个人电脑,你可能不需要“index-url”,“trusted-host”和“proxy”。我不擅长python,而且我在SysAdmin方面更差,但幸运的是我偶然发现了正确的GitHub问题,帮助我调试了这个问题:https://github.com/pypa/pip/issues/11154
您可以通过运行pip config debug找到pip.ini文件的位置,也可以通过运行pip config list查看此pip.ini中的内容

balp4ylt

balp4ylt4#

使用此链接(Python packages not installing in virtualenv using pip)。
如果您的shebang没有问题,请确保在安装到虚拟环境时不使用“sudo -H”。

相关问题