Подтвердить что ты не робот

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

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

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

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

(myvirtualenv)[email protected]:~/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 в виртуальной среде. Кто-нибудь успешно достиг этого? Или кто-нибудь имеет представление о том, как это сделать?

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

4b9b3361

Ответ 1

Когда 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 должен иметь возможность установить его

Ответ 2

Я предлагаю установить системный пакет для привязок Python DBUS, а затем создать virtualenv с --system-site-packages командной строки --system-site-packages чтобы разрешить доступ к общесистемным пакетам Python (включая пакет dbus) из активированного virtualenv., Например, в 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

Ответ 3

Другим обходным решением является просто скопировать файлы/библиотеки 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/

Ответ 4

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

Ответ 5

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

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

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

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

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

Ответ 6

Перейти к вашему 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