在虚拟环境中将包安装到全局站点包
Pip installing packages to global site-packages when inside virtual environment
首先声明我已阅读 pip installing in global site-packages instead of virtualenv 但它没有解决我的问题。
当使用 python -m venv venv
(或任何其他名称)创建虚拟环境然后使用 source venv/bin/activate
激活所述 venv 时,运行 pip install [package]
实际上将软件包安装到(用户)全局 python 站点包,位于 ~/.local/lib/python3.7/site-packages/
.
有趣的是,它总是尝试安装包,但无法识别它们是全局安装的,这意味着它最初是在正确的位置寻找包。
我是运行 Manjaro Linux,运行最新更新。
我在 ~/Stuff/tests/venv
中创建了这个虚拟环境。
运行 which pip
和 which python
returns:
(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:
(venv) angelin@asgard:~/Stuff/tests/venv $ cat bin/pip
#!/home/angelin/Stuff/tests/venv/bin/python
# -*- coding: utf-8 -*-
...
我的路径,在 virtualenv 中,也首先指向虚拟环境:
(venv) angelin@asgard:~/Stuff/tests/venv $ echo $PATH
/home/angelin/Stuff/tests/venv/bin:/home/angelin/.local/bin:...
手动 运行 python -m pip
或 venv/bin/python venv/bin/pip
产生相同的结果。
PYTHONPATH
变量未设置。
我已经尝试使用 pacman -S python python-pip
重新安装 python 和 pip,但我相信这只会重新安装全局包(位于 /usr/bin
中,我不想弄乱 .local
安装以防万一我破坏了比实际更多的东西。
如有任何建议,我们将不胜感激。
我有临时解决方法。
/etc/pip.conf
包含:
[global]
user = true
没有本地 pip 配置文件,这导致它总是通过 --user
选项。我不确定如何正确配置我的本地文件,但我创建了它并设置了 user = false
并且只会在 venvs 之外手动传递 --user
选项。
感觉这不是一个正确的修复,因为它在 2 天前工作正常,并且全局文件已经一个多月没有更改。也许更新破坏了某些东西,谁知道呢。如果大家有更好的解决方案,欢迎分享。
首先声明我已阅读 pip installing in global site-packages instead of virtualenv 但它没有解决我的问题。
当使用 python -m venv venv
(或任何其他名称)创建虚拟环境然后使用 source venv/bin/activate
激活所述 venv 时,运行 pip install [package]
实际上将软件包安装到(用户)全局 python 站点包,位于 ~/.local/lib/python3.7/site-packages/
.
有趣的是,它总是尝试安装包,但无法识别它们是全局安装的,这意味着它最初是在正确的位置寻找包。
我是运行 Manjaro Linux,运行最新更新。
我在 ~/Stuff/tests/venv
中创建了这个虚拟环境。
运行 which pip
和 which python
returns:
(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:
(venv) angelin@asgard:~/Stuff/tests/venv $ cat bin/pip
#!/home/angelin/Stuff/tests/venv/bin/python
# -*- coding: utf-8 -*-
...
我的路径,在 virtualenv 中,也首先指向虚拟环境:
(venv) angelin@asgard:~/Stuff/tests/venv $ echo $PATH
/home/angelin/Stuff/tests/venv/bin:/home/angelin/.local/bin:...
手动 运行 python -m pip
或 venv/bin/python venv/bin/pip
产生相同的结果。
PYTHONPATH
变量未设置。
我已经尝试使用 pacman -S python python-pip
重新安装 python 和 pip,但我相信这只会重新安装全局包(位于 /usr/bin
中,我不想弄乱 .local
安装以防万一我破坏了比实际更多的东西。
如有任何建议,我们将不胜感激。
我有临时解决方法。
/etc/pip.conf
包含:
[global]
user = true
没有本地 pip 配置文件,这导致它总是通过 --user
选项。我不确定如何正确配置我的本地文件,但我创建了它并设置了 user = false
并且只会在 venvs 之外手动传递 --user
选项。
感觉这不是一个正确的修复,因为它在 2 天前工作正常,并且全局文件已经一个多月没有更改。也许更新破坏了某些东西,谁知道呢。如果大家有更好的解决方案,欢迎分享。