DBusへのアクセスが必要な仮想環境でアプリケーションを実行しています(主にNetwork Managerと対話するため)。
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を設定するのに最適な方法かもしれません。
前もって感謝します。
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でインストールできます
私の提案は、Python DBUSバインディングのシステムパッケージをインストールしてから、--system-site-packages
コマンドを使用してvirtualenvを作成することですアクティブ化されたvirtualenvからシステム全体のPythonパッケージ(dbus
パッケージを含む)へのアクセスを有効にする行オプション。たとえば、Debian/Ubuntu(または派生ディストリビューション)の場合:
$ Sudo apt-get install python-dbus
$ virtualenv --system-site-packages dbus-venv
venv
の代わりに組み込みのPython 3 virtualenv
モジュールを使用するには:
$ Sudo apt-get install python-dbus
$ Sudo apt-get install python3-venv
$ python3 -m venv --system-site-packages my_venv
もう1つの回避策は、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/
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
OPはこのために freedesktop.orgのチケット を開いているようで、開いたままです。ただし、 そのチケットに添付されたパッチ があり、ほとんどすべてのバージョンのpython-dbusに適用でき、新しいtarballとして再パッケージ化されます。
@TheMeaningfulEngineerはどうもありがとうございました。pipを使用してdbusをインストールする際にいくつかの問題が発生しており、それがどこにいても良い一日を過ごせることを願っています;)
ローカルにあるかどうかを確認する-Sudo apt list --installed | grep pakage-name
Sudo apt-get install libdbus-glib-1-dev libdbus-1-dev
この行の後、dbus
とnetworkmanager
をエラーなしでインストールしました
これはまさに私がやったことであり、その前に@TheMeaningfulEngineerが言っていることが機能している後、私のすべてのdbusバージョンとnetworkmanagerをチェックアウトしました。英語。
Python as dbus-pythonは廃止されたため、pydbusを使用する必要があります:
pip install pydbus
これでうまくいきました。