0

如何使用 pip 从 virtualenv 外部将软件安装到特定的 virtualenv。

例如,如果我有一个 virtualenv /home/guest/virtualenv/django-env,如何在不执行 source /home 的情况下将 python 包安装到 /home/guest/virtualenv/django-env/lib/python2.7/site-packages/ /guest/virtualenv/django-env/bin/activate 并使用 /usr/local/bin/pip 中可用的默认 pip

上下文是,我正在使用 fabric 远程安装软件,当我使用 fabric 时,我无法保留新创建的虚拟环境。因此,为了能够将软件安装到新的 virtualenv 中,我必须从 virtualenv 外部运行默认 pip (/usr/local/bin/pip)

4

2 回答 2

2

您无需获取 virtualenv 即可使用它。只需通过执行安装在 virtualenv 中的 pip 来安装包:/home/guest/virtualenv/django-env/bin/pip install <package>

您还可以在早期版本的 pip 中,在另一个 virtualenv 中运行 pip,而不是在它安装的那个中运行 pip pip -E,如下所示:

pip -E /home/guest/virtualenv/django-env/

但这确实比上述没有优势,并且可能会导致错误,因此第一个选项仍然更好。

于 2013-07-03T05:08:46.677 回答
1

pip 1.1之前,有一个选项 -E 可以在虚拟环境中安装软件包而无需切换,就像你可以做的那样,

pip install -E /path/to/env <package>

但根据变更日志,

删除了 -E/--environment 选项和 PIP_RESPECT_VIRTUALENV;两者都使用了一个被破坏的重新启动机制,并且没有一个是有用的,因为现在每个 virtualenv 里面都有 pip 。将 pip -E path/to/venv install Foo 替换为 virtualenv path/to/venv && path/to/venv/pip install Foo。

因此,如果您在 1.1 之前有 pip,那么您很幸运能够使用全局 pip。

于 2013-07-03T05:44:37.493 回答