30

这是可能的,当然。

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

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

4

5 回答 5

30

如果你真的需要这样做,你可以将全局安装的文件直接复制到你的 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 中的文件之后,我在该目录中查找了带有 pycurl 的站点包或 dist 包。您还必须将任何可执行文件从 bin 复制到 virtualenv 的 bin 目录中。

此外,pip install -r requirements.txt在那里运行一个成功找到的 pycurl 并跳过它,就好像我通过 pip 安装它一样。

于 2012-12-04T18:59:22.443 回答
5

你为什么想做这个?重点是避免做那样的事情......

virtualenv whatever
cd whatever
bin/pip install dbus-python

您还可以选择指定--no-site-packagestovirtualenv以使其更加独立。

于 2012-07-11T21:59:16.623 回答
3

首先安装 dbus 开发库(你可能需要一些其他的开发库,但这就是我所需要的)

sudo apt-get install libdbus-1-dev libdbus-glib-1-dev

接下来,激活您的 virtualenv,运行以下命令。它会失败,但没关系。

pip install dbus-python

最后,进入您的 virtualenv 的构建目录并以非 Python 方式安装它。

cd $VIRTUAL_ENV/build/dbus-python
chmod +x configure
./configure --prefix=$VIRTUAL_ENV
make
make install
于 2013-04-05T03:17:22.207 回答
3

另一种解决方案是全局安装,然后允许 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. deactivate # 在你使用完 virtualenv 之前不要退出
于 2018-11-28T08:59:08.850 回答
2

要在现有虚拟环境中包含系统站点包,请打开配置文件: <PATH_TO_YOUR_VENV_FOLDER>/pyvenv.cfg

并更改falsetrueinclude-system-site-packages

include-system-site-packages = true

保存并重新加载您的虚拟环境。

(在 Raspbian GNU/Linux 10(buster)上使用 virtualenv 20.2.2 进行测试,以将安装了 apt 的 python3-pyqt5 拉入我的虚拟环境中)

如果是针对新环境@Joshua Kan使用带有命令的标志的答案可能就是您想要的。--system-site-packagesvenv

于 2020-12-19T15:13:04.413 回答