因此,我的 python 项目有一个名为 venv 的 virtualenv 文件夹。
我可以跑:
venv/bin/pip install -r requirements.txt
它安装了我需要的项目的所有要求,除了一个,M2Crypto。安装它的唯一方法是通过 apt-get:
apt-get install python-m2crypto
然后如何将通过 apt 安装的这个包添加到 venv 文件夹?
因此,我的 python 项目有一个名为 venv 的 virtualenv 文件夹。
我可以跑:
venv/bin/pip install -r requirements.txt
它安装了我需要的项目的所有要求,除了一个,M2Crypto。安装它的唯一方法是通过 apt-get:
apt-get install python-m2crypto
然后如何将通过 apt 安装的这个包添加到 venv 文件夹?
--system-site-packages
提供对虚拟环境的全局站点包模块的访问。
你可以这样做:
$ sudo apt-get install python-m2crypto
$ virtualenv env --system-site-packages
...然后您将可以访问m2crypto
(以及所有其他系统范围内安装的软件包)在您的 virtualenv 中。
毕竟我做了什么:
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/
真正简单的解决方案。
在虚拟环境目录中,编辑文件pyvenv.cfg
. 设置参数 include-system-site-packages = true
,保存文件。全局安装的模块将在您下次激活 ( source venv/bin/activate
) 环境时出现。
可以通过验证pip list
。
享受!
toggleglobalsitepackages
将切换对系统范围的访问site-packages
。
注意:您需要pip install virtualenvwrapper
获取此命令;香草virtualenv
不包括它。与您一起virtualenvwrapper
,您还可以获得非常有用的mkvirtualenv
命令rmvirtualenv
等。
venv/bin/pip install -I M2Crypto
强制它-I
也被安装到 virtualenv 中,即使它已经全局安装。