系统pip可以将模块安装到一个创建的venv --without-pip吗?

时间:2016-06-24 18:41:03

标签: python pip virtualenv

在Cygwin / Windows 7上使用python 3.4.3和pip 8.1.2。

我想维护一个更新的系统范围点,而不是为每个新的venv安装和升级它。

捆绑的点子已经过时了:

$ python3 -c 'import ensurepip; print(ensurepip.version())'
6.0.8

我不想维护除pip之外的任何系统范围的模块,而是所有依赖关系都应该存在于venv中。

我试过了:

$ pyvenv-3.4 --without-pip venv
$ source venv/bin/activate
(venv) $ which pip python
/usr/bin/pip
$HOME/venv/bin/python

这是我的期望。 但那时:

(venv) $ export PIP_REQUIRE_VIRTUALENV=true
(venv) $ pip show pip
Could not find an activated virtualenv (required).

这非常令人困惑。

(venv) $ PIP_REQUIRE_VIRTUALENV= pip show pip
---
Metadata-Version: 2.0
Name: pip
Version: 8.1.2
[...]

如果我禁用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

我宁愿不从系统范围的模块中泄漏需求。有没有更简单的方法?我错误地期望系统点“尊重我的venv”吗?

有关使用PIP_RESPECT_VIRTUALENV和/或--respect-virtualenv的类似question here,但我发现当前的pip源没有任何相关内容。

0 个答案:

没有答案