在虚拟环境中,将包安装到全局 site-packages

2024-09-29 00:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

让我先说,我已经读过pip installing in global site-packages instead of virtualenv,它并没有解决我的问题。在

当使用python -m venv venv(或任何其他名称)创建虚拟环境,然后使用source venv/bin/activate激活所述venv时,运行pip install [package]实际上会将包安装到位于~/.local/lib/python3.7/site-packages/中的(用户)全局python站点包中。在

有趣的是,它总是尝试安装这些包,但并不识别它们是全局安装的,这意味着它最初在正确的位置查找包。在

我正在运行ManjaroLinux,并运行最新的更新。在

我在~/Stuff/tests/venv中创建了这个虚拟环境。 运行which pipwhich python返回:

(venv) angelin@asgard:~/Stuff/tests/venv $ which pip
/home/angelin/Stuff/tests/venv/bin/pip
(venv) angelin@asgard:~/Stuff/tests/venv $ which python
/home/angelin/Stuff/tests/venv/bin/python

检查所述pip可执行文件显示正确的shebang:

^{pr2}$

在virtualenv中,我的路径也首先指向虚拟环境:

(venv) angelin@asgard:~/Stuff/tests/venv $ echo $PATH
/home/angelin/Stuff/tests/venv/bin:/home/angelin/.local/bin:...

手动运行python -m pipvenv/bin/python venv/bin/pip会产生相同的结果。
未设置PYTHONPATH变量。
我曾经尝试过使用pacman -S python python-pip重新安装python和pip,但我相信只会重新安装全局包(位于/usr/bin),我不想搞乱.local安装,以防我破坏了更多的东西。在

如有任何建议,我们将不胜感激。在


Tags: pipwhichhomebinvirtualenvvenvpackageslocal
1条回答
网友
1楼 · 发布于 2024-09-29 00:19:09

我有一个临时的解决办法。在

/etc/pip.conf包含:

[global]
user = true

没有本地pip配置文件,这导致它总是传递 user选项。我不知道如何正确配置我的本地文件,但是我创建了它并设置了user = false,并将在venvs之外手动传递 user选项。在

这感觉不是一个合适的修复,因为它在2天前正常工作,而且全局文件已经一个多月没有被更改过。也许是一个更新打破了什么,谁知道。如果其他人有更好的解决方案,请随意分享。在

相关问题 更多 >