我如何才能将apt-get安装到我的virtualenv?

时间:2012-07-11 21:11:01

标签: python virtualenv apt-get

当然,这是可能的。

例如 - 我可以像这样下载python-dbus:     $ sudo apt-get download python-dbus

但接下来应该做什么,在我目前的virtualenv中使用这个.deb包?

5 个答案:

答案 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:

  1. sudo apt update#首先更新
  2. sudo apt install python3-matplotlib#全局安装
  3. sudo pip3 install -U virtualenv#使用pip3为Python 3安装virtualenv
  4. virtualenv --system-site-packages -p python3 ./venv#system-site-packages选项允许venv查看所有全局软件包,包括matplotlib
  5. source ./venv/bin/activate#激活venv以在virtualenv中使用matplotlib
  6. 停用#在使用virtualenv完成操作之前不要退出