如何将全局安装的包导入virtualenv文件夹

Ric*_*nop 32 python ubuntu virtualenv

所以我有一个名为venv的virtualenv文件夹用于我的python项目.

我可以跑:

venv/bin/pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

除了M2Crypto之外,还安装了项目所需的所有要求.安装它的唯一方法是通过apt-get:

apt-get install python-m2crypto
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过apt将这个软件包添加到venv文件夹中?

Cor*_*erg 42

--system-site-packages
Run Code Online (Sandbox Code Playgroud)

允许访问虚拟环境的全局站点包模块.

你可以这样做:

$ sudo apt-get install python-m2crypto
$ virtualenv env --system-site-packages
Run Code Online (Sandbox Code Playgroud)

...然后您可以m2crypto在virtualenv中访问(以及所有其他系统范围内安装的软件包).

  • 如果您的虚拟环境已经设置好并且您不想重新创建它,并且您正在使用或打开使用_virtualenvwrapper_来管理您的虚拟环境,那么您可以添加对`--system-site-packages`的访问权限.事后通过运行[`toggleglobalsitepackages`命令](http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html#toggleglobalsitepackages). (11认同)
  • Richard Knop,这样你就可以在你自己的 virtualenv 中安装额外的包,而无需在你自己的 virtualenv 中安装额外的包,而不会弄乱系统 python。 (2认同)

Ric*_*nop 24

毕竟我做了什么:

cp -R /usr/lib/python2.7/dist-packages/M2Crypto /home/richard/hello-project/venv/lib/python2.7/site-packages/
cp -R /usr/lib/python2.7/dist-packages/OpenSSL /home/richard/hello-project/venv/lib/python2.7/site-packages/
Run Code Online (Sandbox Code Playgroud)

  • 这应该内置到虚拟环境中 (3认同)

Wil*_*ill 12

toggleglobalsitepackages将切换到系统范围的访问权限site-packages.

注意:您需要pip install virtualenvwrapper获取此命令; 香草virtualenv不包括它.随着virtualenvwrapper你也得到了非常有用mkvirtualenvrmvirtualenv命令,等等.

  • 截至今天,它现在是'toggleglobalsitepackages` (3认同)

ros*_*net 12

真正简单的解决方案。

在虚拟环境目录中,编辑文件pyvenv.cfg. 设置参数 include-system-site-packages = true,并保存文件。全局安装的模块将在您下次激活 ( source venv/bin/activate) 环境时出现。

可以通过验证pip list

享受!

  • 这是我能找到的唯一不需要 sudo 访问权限的解决方案。我的问题是,我需要在 virtualenv 中导入预安装的全局包(需要 sudo),我想在其中以可编辑模式安装其他包。使用“--system-site-packages”创建 virtualenv 时这是不可能的。所以这对我帮助很大,谢谢! (2认同)