2012-11-13 13 views
16

私はDBusにアクセスする必要のある仮想環境(主にネットワークマネージャとやりとりする)でアプリケーションを実行しています。virtualenvにPython-Dbusをインストールする

easyinstallとpipで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からのpython dbusのバインディングとその「アクセス」といくつかの問題を持っていた:

(myvirtualenv)[email protected]:~/Documents/Projects/VirtualEnvs/current_env$ bin/pip install dbus-python 

ピップはで私を叫びますモジュールであるため、仮想環境でDbus-Pythonを設定する最良の方法が何であるかは分かりません。誰もこれを達成しましたか?それとも誰かがこれを行う方法について考えているのですか?

ありがとうございます。

答えて

14

手動でそれほど難しくはありません。

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

次に、コンパイルしたファイルをvirtualenvに移動できます。


編集:DBUS-Pythonはsetup.pyを持っているのdbus-のpython-1.2.2で始まる(2016年2月22日リリース)、そうピップはそれをOPが持っているように見えます

11

私の提案は、Python DBUSバインディングのためのシステムパッケージをインストールして起動しから(dbusパッケージを含む)システム全体のPythonパッケージへのアクセスを可能にする--system-site-packagesコマンドラインオプションでvirtualenvのを作成することですvirtualenv。 Debianの/ Ubuntuの上の例(または派生ディストリビューション)の場合:それはあなたがdownload the sourceに持っており、それをコンパイルしますので、持っていないdbus-pythonsetup.py探しパッケージをインストールしようとするpip

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

をインストールすることができるはずですこのためにticket on freedesktop.orgを開きました。ほとんどのバージョンのpython-dbusにも適用でき、新しいtarballとして再パッケージ化できるpatch attached to that ticketがあります。

+0

ああ!それは私ではありませんでした。私はそのパッチを見ていないが、情報に感謝:) – BorrajaX

+1

virtualenvの 'dbus-python == 1.2.4'に対して正しく動作していることを確認できます。それをうまく構築するには 'sudo apt-get install libdbus-glib-1-dev libdbus-1-dev'が必要です – TheMeaningfulEngineer

+1

ありがとう@TheMeaningfulEngineer、あなたのコメントは私のためにこの質問に答えました。 – justfortherec

8

別の回避策は、単に手動でvirtualenvの直接dbusファイル/ライブラリをコピーすることです:

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/ 
+2

私はこの考えが気に入っていますが、多くのシステムはdbus-pythonを内部的に使用されているスクリプトのために使用する予定であり、virtualenvwrapper 'postmkvirtualenv'スクリプトでうまく動作します。 – Tatsh

+0

このソリューションは、私が完全にきれいなものとして特徴付けるものではありませんが、私は単純化のためにそれを好きです。アップボーニング。 :-) – Drachenfels

関連する問題