Kim*_*lor 5 python pip virtualenv
在 Cygwin / Windows 7 上使用 python 3.4.3 和 pip 8.1.2。
我想维护一个更新的系统范围的 pip,而不是必须为每个新的 venv 安装和升级它。
捆绑的点在其他方面已经过时了:
$ python3 -c 'import ensurepip; print(ensurepip.version())'
6.0.8
Run Code Online (Sandbox Code Playgroud)
我不想维护除 pip 之外的任何系统范围模块,而是所有依赖项都应该放在 venv 中。
我试过了:
$ pyvenv-3.4 --without-pip venv
$ source venv/bin/activate
(venv) $ which pip python
/usr/bin/pip
$HOME/venv/bin/python
Run Code Online (Sandbox Code Playgroud)
这正是我所期望的。但是之后:
(venv) $ export PIP_REQUIRE_VIRTUALENV=true
(venv) $ pip show pip
Could not find an activated virtualenv (required).
Run Code Online (Sandbox Code Playgroud)
这是相当令人困惑的。
(venv) $ PIP_REQUIRE_VIRTUALENV= pip show pip
---
Metadata-Version: 2.0
Name: pip
Version: 8.1.2
[...]
Run Code Online (Sandbox Code Playgroud)
如果我禁用 PIP_REQUIRE_VIRTUALENV 并运行 pip install MODULE,pip 将运行,但 MODULE 会安装在我的系统站点包中,而不是安装在 venv 下。
我确实通过使用 --system-site-packages 找到了解决方法:
$ pyvenv-3.4 --without-pip --system-site-packages venv
$ source venv/bin/activate
(venv) $ export PIP_REQUIRE_VIRTUALENV=true
(venv) $ python -c 'import pip; pip.main()' show pip
---
Metadata-Version: 2.0
Name: pip
Version: 8.1.2
Run Code Online (Sandbox Code Playgroud)
我宁愿不冒险从系统范围的模块中泄漏需求。有更容易的方法吗?我期望系统 pip '尊重我的 venv' 是错误的吗?
这里有一个关于使用 PIP_RESPECT_VIRTUALENV 和/或 --respect-virtualenv 的类似问题,但是,我在当前的 pip 源中没有发现任何相关内容。
我也不想安装更新版本的pipto venv,所以使用了--without-pip. 但最初我想重用系统中的一些二进制模块,因此我创建了 venv:
# mkdir ~/.venv
# pip index versions ansible
ansible (7.3.0)
# python3 -m venv --without-pip --system-site-packages ansible-7.3.0
Run Code Online (Sandbox Code Playgroud)
pip不在 中~/.venv/.../bin,系统pip告诉无法安装到系统目录,因此安装到用户目录 ( ~/.local/share/)。
有一种方法可以pip通过在 venv 中将其作为模块运行来使用 venv(由于--system-site-packages):
python -m pip install --require-virtualenv ansible==7.3.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
696 次 |
| 最近记录: |