当然,这是可能的。
例如 - 我可以像这样下载python-dbus: $ sudo apt-get download python-dbus
但接下来应该做什么,在我目前的virtualenv中使用这个.deb包?
答案 0 :(得分:22)
如果你真的需要这样做,你可以直接将全局安装的文件复制到virtualenv中。例如,由于所需的库没有安装,我无法使用pycurl,但是apt-get install python-pycurl
做了。所以我做了以下事情:
sudo apt-get install python-pycurl
cp /usr/lib/python2.7/dist-packages/pycurl* ~/.virtualenvs/myenv/lib/python2.7/site-packages/
安装说它将它添加到/usr/lib/python2.7。因此,在查看我将其复制到virtualenv中的文件后,我查看了该目录中的site-packages或dist-packages with pycurl。您还必须将bin中的任何可执行文件复制到virtualenv的bin目录中。
另外,在那里运行pip install -r requirements.txt
成功找到的pycurl并跳过它就像我通过pip安装它一样。
答案 1 :(得分:5)
你为什么要这样做?重点是避免做那样的事情......
virtualenv whatever
cd whatever
bin/pip install dbus-python
您也可以选择将--no-site-packages
指定为virtualenv
,以使其更加孤立。
答案 2 :(得分:3)
首先安装dbus开发库(你可能需要一些其他开发库,但这就是我所需要的)
sudo apt-get install libdbus-1-dev libdbus-glib-1-dev
接下来,在激活virtualenv的情况下,运行以下命令。它会失败,但没关系。
pip install dbus-python
最后,进入你的virtualenv的构建目录并以非pythonic方式安装它。
cd $VIRTUAL_ENV/build/dbus-python
chmod +x configure
./configure --prefix=$VIRTUAL_ENV
make
make install
答案 3 :(得分:1)
要在现有虚拟环境中包含系统站点包,请打开配置文件:
<PATH_TO_YOUR_VENV_FOLDER>/pyvenv.cfg
并将 false
更改为 true
以获取 include-system-site-packages
include-system-site-packages = true
保存并重新加载您的虚拟环境。
(在 Raspbian GNU/Linux 10 (buster) 上使用 virtualenv 20.2.2 进行测试,以将安装了 apt 的 python3-pyqt5 引入我的虚拟环境)
如果是针对新环境@Joshua Kan 的 answer 使用 --system-site-packages
标志和 venv
命令可能是您想要的。
答案 4 :(得分:0)
另一种解决方案是全局安装,然后允许virtualenv看到它。 例如,假设我们要为Python 3安装matplotlib: