web-dev-qa-db-ja.com

virtualenvにPython-Dbusをインストールする

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を設定するのに最適な方法かもしれません。

前もって感謝します。

20
BorrajaX

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でインストールできます

15
mata

私の提案は、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
15
Pedro Romano

もう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/
10
Tisho

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

10
cryptoKTM

OPはこのために freedesktop.orgのチケット を開いているようで、開いたままです。ただし、 そのチケットに添付されたパッチ があり、ほとんどすべてのバージョンのpython-dbusに適用でき、新しいtarballとして再パッケージ化されます。

7
Alex Dupuy

@TheMeaningfulEngineerはどうもありがとうございました。pipを使用してdbusをインストールする際にいくつかの問題が発生しており、それがどこにいても良い一日を過ごせることを願っています;)

ローカルにあるかどうかを確認する-Sudo apt list --installed | grep pakage-name

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

この行の後、dbusnetworkmanagerをエラーなしでインストールしました

これはまさに私がやったことであり、その前に@TheMeaningfulEngineerが言っていることが機能している後、私のすべてのdbusバージョンとnetworkmanagerをチェックアウトしました。英語。

Python as dbus-pythonは廃止されたため、pydbusを使用する必要があります:


pip install pydbus

これでうまくいきました。

1
Summit Amola