- 编辑#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
,好的。
- 编辑#1**我稍微筛选了一下这个问题,但是我仍然没有一个解决方案。我在同一个目录中创建了一个新的Flask项目,
- 编辑#2:解决方案**我可能还没有找到确切的原因,但我找到了解决方案。
bin/activate
和bin/pip
脚本本身不知何故被修改了,可能是因为意外地同时运行了两个VirtualEnvs(?)。也许这只是巧合,它在以前从未发生过的情况下连续发生了三次。不知道。
- 编辑#2:解决方案**我可能还没有找到确切的原因,但我找到了解决方案。
我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是错误的。改变到正确的路径,一切都完美地工作。
4条答案
按热度按时间fzsnzjdm1#
我也遇到了同样的问题,对我来说,原因是我的virtualenv在路径中有空格。
将virtualenv移动到一个没有空间的路径解决了这个问题。
56lgkhnf2#
如果您重命名了包含ENV - virtual environment目录的项目目录,请尝试清除ENV目录,重新创建virtualenv并将其激活,然后重新安装pip依赖项。
TL-DR;删除虚拟环境,创建新环境,激活它并再次发出pip命令。
wgmfuz8q3#
在我的例子中,我的
pip.ini
文件已经指定了一个目标值:删除目标解决了问题。如果你使用的是个人电脑,你可能不需要“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
中的内容balp4ylt4#
使用此链接(Python packages not installing in virtualenv using pip)。
如果您的shebang没有问题,请确保在安装到虚拟环境时不使用“sudo -H”。