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

Але*_*еев 20 python virtualenv apt-get

当然,这是可能的.

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

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

MrC*_*les 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/
Run Code Online (Sandbox Code Playgroud)

安装说它将它添加到/usr/lib/python2.7.因此,在查看我将其复制到virtualenv中的文件后,我查看了该目录中的site-packages或dist-packages with pycurl.您还必须将bin中的任何可执行文件复制到virtualenv的bin目录中.

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

  • 但是如果系统 python 和 venv python 版本不同怎么办? (2认同)

Chr*_*ris 11

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

并更改falsetrueforinclude-system-site-packages

include-system-site-packages = true
Run Code Online (Sandbox Code Playgroud)

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

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

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


Jon*_*nts 6

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

virtualenv whatever
cd whatever
bin/pip install dbus-python
Run Code Online (Sandbox Code Playgroud)

您也可以选择指定--no-site-packagesvirtualenv使其更加孤立.

  • 最近版本的virtualenv弃用了--no-site-packages,因为它是新的默认值. (3认同)
  • 谢谢你的回答。但是我的意思是当我们不能使用 pip install 时的情况 - 只需要一个 .deb 格式的存储库 - 我应该怎么做? (2认同)
  • 有时我们无法找到 setup.py 并且 $ pip install dbus-python 在这种情况下会导致[错误 2] 我们没有 setup.py :[ (2认同)