Установка Python-Dbus в virtualenv

Я запускаю приложение в виртуальной среде, которая нуждается в доступе к DBus (в основном для взаимодействия с сетевым менеджером).

Я попытался установить Dbus-Python с easyinstall и pip, но оба потерпели неудачу.

когда я пытаюсь сделать это:

(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 в виртуальной среде. Кто-нибудь успешно достиг этого? Или кто-нибудь есть идея, как это сделать?

спасибо заранее.

5 ответов


, когда pip пытается установить пакет, он ищет setup.py, который dbus-python не имеет, так что вам придется скачать источник и скомпилировать его вручную. Не должно быть слишком трудно:

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

затем вы можете переместить скомпилированные файлы в virtualenv.


edit: начиная с dbus-python-1.2.2 (выпущено 2016-02-22) dbus-python имеет setup.py, поэтому pip должен иметь возможность установить его


мое предложение-установить системный пакет для Привязок Python DBUS, а затем создать виртуальное окружение С --system-site-packages опция командной строки для включения доступа к общесистемным пакетам Python (включая dbus пакет) из активированного виртуальное окружение. Например, в Debian/Ubuntu (или производном дистрибутиве):

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

другой обходной путь - просто вручную скопировать 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/

OP, похоже, открыл билет на freedesktop.org для этого, который остается открытым, однако есть патч прилагается к этому билету это может быть применено к большинству любой версии python-dbus, а затем переупаковано как новый tarball.


@TheMeaningfulEngineer большое спасибо, у меня есть несколько проблем с установкой dbus через pip, и это было то, что мне нужно, надеюсь, у вас будет хороший день, где бы вы ни находились;)

чтобы проверить, есть ли в местных - sudo apt list --installed | grep pakage-name

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

и после этой строки я установил dbus и networkmanager без каких-либо ошибок

это именно то, что я сделал, и до этого я проверил всю свою версию dbus и networkmanager после того, что @TheMeaningfulEngineer сказал, что работает , если я делаю что-то неправильно в этом комментарии, попробуйте объяснить мне, что или почему, и так жаль мой английский.