如何在Anaconda中使用Python

如何在Anaconda中使用Python

本文介绍了如何在Anaconda中使用Python Dbus绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我正在尝试在Anaconda python环境上安装dbus,但我很挣扎.

这是我收到的错误消息:

e@gateway:~$ python
Python 3.5.4 |Anaconda custom (64-bit)| (default, Oct 13 2017, 11:22:58)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbus
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/e/anaconda3/lib/python3.5/site-packages/dbus/__init__.py", line 77, in <module>
    import dbus.types as types
  File "/home/e/anaconda3/lib/python3.5/site-packages/dbus/types.py", line 6, in <module>
    from _dbus_bindings import (
ImportError: /home/e/anaconda3/lib/python3.5/site-packages/_dbus_bindings.so: undefined symbol: _Py_ZeroStruct
>>>

以下是我想问的一些输出:

e@gateway:~$ conda install dbus
Fetching package metadata ...........
Solving package specifications: .

# All requested packages already installed.
# packages in environment at /home/e/anaconda3:
#
dbus                      1.10.22              h3b5a359_0


e@gateway:~$ sudo apt-get install libdbus-glib-1-dev libdbus-1-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libdbus-glib-1-dev is already the newest version (0.106-1).
libdbus-1-dev is already the newest version (1.10.6-1ubuntu3.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


e@gateway:~$ sudo apt-get install dbus
Reading package lists... Done
Building dependency tree
Reading state information... Done
dbus is already the newest version (1.10.6-1ubuntu3.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


e@gateway:~$ which python
/home/e/anaconda3/bin/python


e@gateway:~$ conda --version
conda 4.3.31

e@gateway:~$ sudo /home/e/anaconda3/bin/python -m pip install dbus-python
The directory '/home/e/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/e/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already satisfied: dbus-python in ./anaconda3/lib/python3.5/site-packages

DBus在系统python上可以正常工作,但是在Anaconda Python上不能正常工作.

Python 2.7:

e@gateway:~$ which python
/usr/bin/python
e@gateway:~$ python
Python 2.7.12 (default, Nov 20 2017, 18:23:56)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbus
>>>

Python 3.5:

e@gateway:~$ which python3
/usr/bin/python3
e@gateway:~$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbus
>>>

有人可以帮助我吗?我在这里错过明显地明显的东西吗?

谢谢.

解决方案

我遇到了类似的问题,在少数情况下dbus和python 开箱即用时效果不佳.共识似乎是您需要系统级安装(即apt-get)才能使dbus正常工作.我相信您看到的/home/e/anaconda3/lib/python3.5/site-packages/_dbus_bindings.so: undefined symbol: _Py_ZeroStruct错误与之直接相关.

conda install dbus不会向~/anaconda3/lib/python3.6/site-packages添加任何内容,而是似乎在~/anaconda3/bin/中安装了某些可执行文件,例如dbus-run-sessiondbus-daemon等.这在您分析dbus tarball的内容时有些道理 https://anaconda.org/conda-forge/dbus ,因为它都是C文件,可执行文件.我不确定它应该是dbus python模块,但我可能是错的.

我搜索了conda存储库,发现一些人上载了dbus-python版本,大概是他们编译并安装了.我通过以下方式在py3.6 conda环境中尝试了

conda install -c scottwales dbus-python

然后,我能够导入dbus.这是一种骇人听闻的方法,不应在生产中使用,我建议您听一下卡洛斯·科尔多瓦(Carlos Cordoba)的下方.但是,如果您现在需要解决方案,请搜索一些用户conda软件包或尝试自己编译该库.

I am trying to install dbus on Anaconda python environment and I am struggling.

Here is the error message I am getting:

e@gateway:~$ python
Python 3.5.4 |Anaconda custom (64-bit)| (default, Oct 13 2017, 11:22:58)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbus
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/e/anaconda3/lib/python3.5/site-packages/dbus/__init__.py", line 77, in <module>
    import dbus.types as types
  File "/home/e/anaconda3/lib/python3.5/site-packages/dbus/types.py", line 6, in <module>
    from _dbus_bindings import (
ImportError: /home/e/anaconda3/lib/python3.5/site-packages/_dbus_bindings.so: undefined symbol: _Py_ZeroStruct
>>>

Here are some of the outputs I think may be asked:

e@gateway:~$ conda install dbus
Fetching package metadata ...........
Solving package specifications: .

# All requested packages already installed.
# packages in environment at /home/e/anaconda3:
#
dbus                      1.10.22              h3b5a359_0


e@gateway:~$ sudo apt-get install libdbus-glib-1-dev libdbus-1-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libdbus-glib-1-dev is already the newest version (0.106-1).
libdbus-1-dev is already the newest version (1.10.6-1ubuntu3.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


e@gateway:~$ sudo apt-get install dbus
Reading package lists... Done
Building dependency tree
Reading state information... Done
dbus is already the newest version (1.10.6-1ubuntu3.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


e@gateway:~$ which python
/home/e/anaconda3/bin/python


e@gateway:~$ conda --version
conda 4.3.31

e@gateway:~$ sudo /home/e/anaconda3/bin/python -m pip install dbus-python
The directory '/home/e/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/e/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already satisfied: dbus-python in ./anaconda3/lib/python3.5/site-packages

DBus is working fine on the system python, however not working on Anaconda Python.

Python 2.7:

e@gateway:~$ which python
/usr/bin/python
e@gateway:~$ python
Python 2.7.12 (default, Nov 20 2017, 18:23:56)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbus
>>>

Python 3.5:

e@gateway:~$ which python3
/usr/bin/python3
e@gateway:~$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbus
>>>

Can anyone help me? Am I missing something blatantly obvious here?

Thanks in advance.

解决方案

I had similar issues, there are few cases where dbus and python don't work well out-of-the-box. The consensus appears to be that you need a system-level install (i.e. apt-get) to get dbus to work. I believe the /home/e/anaconda3/lib/python3.5/site-packages/_dbus_bindings.so: undefined symbol: _Py_ZeroStruct error you're seeing is directly related to that.

conda install dbus does not add anything to ~/anaconda3/lib/python3.6/site-packages, but instead appears to install some executables in ~/anaconda3/bin/ like dbus-run-session, dbus-daemon, etc. This makes some sense when you analyze the contents of the dbus tarball https://anaconda.org/conda-forge/dbus, as it's all C files and executables. I'm not sure it's supposed to be the dbus python module, but I could be wrong.

EDIT:

I searched the conda repositories and found a few individuals that uploaded a version of dbus-python, presumably that they compiled and installed. I tried this one out in a py3.6 conda environment via:

conda install -c scottwales dbus-python

I was then able to import dbus. This is a hacky approach and should not be used in production, I'd recommend listening toCarlos Cordoba's post below. But if you need a solution now, search through some user conda packages or try to compile the library yourself.

这篇关于如何在Anaconda中使用Python Dbus绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-06 08:41