在virtualenv中安装Python-Dbus

问题描述 投票:19回答:7

我在需要访问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 dbus绑定和Python模块的“可访问性”方面遇到了一些问题,所以我真的不知道在虚拟环境中设置Dbus-Python的最佳方法。有没有人成功实现这一点?或者有人知道如何做到这一点?

先感谢您。

python installation virtualenv dbus
7个回答
15
投票

pip试图安装一个包时,它会查找setup.pydbus-python没有,所以你必须手动编译download the source。不应该太难:

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应该能够安装它


14
投票

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

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

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

$ sudo apt-get install python-dbus
$ sudo apt-get install python3-venv
$ python3 -m venv --system-site-packages my_venv

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/

8
投票

转到你的Venv按照以下两个步骤:

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


7
投票

OP似乎为此开了一个ticket on freedesktop.org,仍然开放;然而,有一个patch attached to that ticket可以应用于大多数任何版本的python-dbus,然后重新打包为一个新的tarball。


2
投票

非常感谢@TheMeaningfulEngineer,我有一些问题需要通过pip安装dbus,这就是我需要的,我希望无论你身在何处都能度过美好的一天;)

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

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

在这一行后,我确实安装了dbusnetworkmanager没有任何错误

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


1
投票

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


pip install pydbus

这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.