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