23

我在需要访问 DBus 的虚拟环境中运行应用程序(主要是与网络管理器交互)。

我尝试使用 easyinstall 和 pip 安装 Dbus-Python,但都失败了。

当我尝试这样做时:

(myvirtualenv)borrajax@borrajax-computer:~/Documents/Projects/VirtualEnvs/current_env$ bin/pip install dbus-python

皮普冲我吼道:

Downloading/unpacking dbus-python
  Downloading dbus-python-1.1.1.tar.gz (596kB): 596kB downloaded
  Running setup.py egg_info for package dbus-python
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
    IOError: [Errno 2] No such file or directory: '/home/borrajax/Documents/Projects/VirtualEnvs/current_env/build/dbus-python/setup.py'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

IOError: [Errno 2] No such file or directory: '/home/borrajax/Documents/Projects/VirtualEnvs/current_env/build/dbus-python/setup.py'

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /home/borrajax/Documents/Projects/VirtualEnvs/current_env/build/dbus-python
Storing complete log in /home/borrajax/.pip/pip.log

过去,我的 Python 模块中的 python dbus 绑定及其“可访问性”存在一些问题,所以我真的不知道在虚拟环境中设置 Dbus-Python 的最佳方法是什么。有没有人成功做到这一点?或者有没有人知道如何做到这一点?

先感谢您。

4

7 回答 7

21

转到您的 Venv 请按照以下 2 个步骤操作:

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

2)pip install dbus-python

验证:

3) pip freeze

如果安装正确,您将看到:dbus-python==1.2.8

于 2019-01-07T10:05:20.977 回答
18

我的建议是为 Python DBUS 绑定安装系统包,然后使用命令行选项创建virtualenv允许从激活的virtualenv--system-site-packages访问系统范围的 Python 包(包括包) 。例如在 Debian/Ubuntu(或衍生发行版)上:dbus

$ sudo apt-get install python-dbus
$ virtualenv --system-site-packages dbus-venv

要使用内置的 Python 3venv模块而不是virtualenv

$ sudo apt-get install python-dbus
$ sudo apt-get install python3-venv
$ python3 -m venv --system-site-packages my_venv
于 2012-11-13T19:36:17.093 回答
15

pip试图安装一个包时,它会寻找setup.py没有dbus-python的,所以你必须下载源代码并手动编译它。不应该太难:

PYTHON=python3.3 ./configure --prefix=/tmp/dbus-python
make
make install

然后您可以将编译后的文件移动到您的 virtualenv。


编辑:从 dbus-python-1.2.2 开始(2016-02-22 发布) dbus-python 有一个setup.py,所以 pip 应该能够安装它

于 2012-11-13T19:40:07.017 回答
10

另一种解决方法是手动将dbus文件/库直接复制到您的 virtualenv:

cp -r /usr/lib/pythonX.X/{site or dist}-packages/dbus myvirtenv/usr/lib/pythonX.X/site-packages/    
cp -r /usr/lib/pythonX.X/{site or dist}-packages/_dbus_*.so myvirtenv/usr/lib/pythonX.X/site-packages/
于 2014-04-23T07:30:47.670 回答
7

OP 似乎为此在 freedesktop.org 上开了一张票,该票仍然开放;但是,该票附带了一个补丁,该补丁可以应用于大多数任何版本的 python-dbus,然后重新打包为新的 tarball。

于 2013-10-16T12:09:28.460 回答
2

@TheMeaningfulEngineer 非常感谢,我在通过 pip 安装 dbus 时遇到了一些问题,这就是我所需要的,我希望无论你在哪里都过得愉快;)

检查本地是否有 -sudo apt list --installed | grep pakage-name

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

在这行之后我确实安装了dbus并且networkmanager没有任何错误

这正是我所做的,在此之前,我检查了我所有的 dbus 版本和网络管理器,之后做了@TheMeaningfulEngineer 所说的工作,如果我在此评论中做错了什么,请尝试向我解释是什么或为什么,非常抱歉我的英语。

于 2018-06-22T07:30:41.977 回答
0

对于 Python,因为dbus-python现在已过时,您应该使用pydbus


pip install pydbus

这对我有用。

于 2019-03-18T13:41:20.370 回答