【问题标题】:Install Python-Dbus in virtualenv在 virtualenv 中安装 Python-Dbus
【发布时间】:2012-11-02 04:11:03
【问题描述】:

我在需要访问 DBus(主要是与网络管理器交互)的虚拟环境中运行应用程序。

我尝试使用 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 模块中遇到了一些关于 python dbus 绑定及其“可访问性”的问题,所以我真的不知道在虚拟环境中设置 Dbus-Python 的最佳方法是什么。有没有人成功做到这一点?或者有没有人知道如何做到这一点?

提前谢谢你。

【问题讨论】:

    标签: python installation virtualenv dbus


    【解决方案1】:

    按照以下 2 个步骤转到您的 Venv:

    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

    【讨论】:

      【解决方案2】:

      我的建议是为 Python DBUS 绑定安装系统包,然后使用 --system-site-packages 命令行选项创建 virtualenv 以启用对系统范围 Python 包的访问(包括 @ 987654323@ 包)来自已激活的 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】:

        pip 尝试安装一个包时,它会寻找setup.py,而dbus-python 没有,所以你必须download the source 并手动编译它。应该不会太难:

        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 应该可以安装它

        【讨论】:

          【解决方案4】:

          另一种解决方法是手动将 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/
          

          【讨论】:

          • 我喜欢这个想法,因为由于内部使用了脚本,很多系统都将拥有 dbus-python,并且它可以与 virtualenvwrapper postmkvirtualenv 脚本很好地配合使用。
          • 虽然这个解决方案并不是我所描述的完全干净的,但我喜欢它的简单性。赞成。 :-)
          【解决方案5】:

          OP 似乎为此打开了一个ticket on freedesktop.org,它仍然保持打开状态;但是有一个 patch attached to that ticket 可以应用于大多数任何版本的 python-dbus,然后重新打包为一个新的 tarball。

          【讨论】:

          • 哦!那不是我。我还没有看到那个补丁,但是谢谢你的信息:)
          • 可以确认它在 virtualenv 中为 dbus-python==1.2.4 正常工作。构建成功需要sudo apt-get install libdbus-glib-1-dev libdbus-1-dev
          • 感谢@TheMeaningfulEngineer,您的评论为我解答了这个问题。
          【解决方案6】:

          @TheMeaningfulEngineer 非常感谢,我在通过 pip 安装 dbus 时遇到了一些问题,这正是我所需要的,希望无论你身在何处,你都过得愉快 ;)

          检查本地是否有 - sudo apt list --installed | grep pakage-name

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

          在这一行之后,我确实安装了dbusnetworkmanager,没有任何错误

          这正是我所做的,在此之前我检查了我所有的 dbus 版本和网络管理器,之后我做了@TheMeaningfulEngineer 所说的工作,如果我在这个评论中做错了什么,试着解释我是什么或为什么,等等对不起我的英语不好。

          【讨论】:

          • (这篇文章似乎没有为问题提供quality answer。请编辑您的答案,或者将其作为对问题的评论发布)。
          【解决方案7】:

          对于 Python,因为 dbus-python 现已过时,您应该使用 pydbus


          pip install pydbus
          

          这对我有用。

          【讨论】:

          猜你喜欢
          • 2015-02-28
          • 2012-03-31
          • 2013-09-18
          • 2018-01-22
          • 1970-01-01
          • 2017-01-26
          • 1970-01-01
          • 2017-08-25
          • 2016-04-24
          相关资源
          最近更新 更多