导入 python-Xlib 的问题

Posted

技术标签:

【中文标题】导入 python-Xlib 的问题【英文标题】:Problems importing python-Xlib 【发布时间】:2011-08-19 00:52:03 【问题描述】:

我安装了一个新模块,它看起来好像它的依赖项之一尚未安装。该模块称为 Xlib.display。 这是我收到的错误消息:

from Xlib.display import Display
ImportError: No module named Xlib.display

我在哪里可以找到我显然缺少的这个模块? Google 没有发现任何线索。

“编辑:我已经下载了那个 sourceforge 模块,但我仍然得到相同的结果。

【问题讨论】:

呃... 尝试 Google,然后说它没有帮助... google.com/search?q=python+xlib 所以你下载了它。你安装了吗? 它在 Python 2 中加载对我来说很好,而不是 Python 3 【参考方案1】:

请尝试。

这将安装 Xlib sudo apt-get install python-xlib

那你就可以查了

>>from Xlib.display import Display

如果您想控制和捕获鼠标事件,请安装 PyMouse:

sudo easy_install https://github.com/pepijndevos/PyMouse/zipball/master

【讨论】:

【参考方案2】:

下面对我有用!

pip install python3_xlib

我还使用 pyuserinput 进行自动化,这需要它。

【讨论】:

我在 virtualenv 中做了pip install python-xlib。太好了!【参考方案3】:

我遇到了同样的问题,但上面的解决方案对我不起作用。由于我是通过anaconda包安装python的,所以在使用的时候:

sudo apt-get install  python-xlib

python2 仍然无法检测到 Xlib。我的解决方案是使用:

anaconda search -t conda python-xlib

然后从 anaconda api 中找到包,我的是 erik/python-xlib。使用安装它:

conda install --channel https://conda.anaconda.org/erik python-xlib

然后它起作用了。

【讨论】:

【参考方案4】:

在 Debian 系统上安装 python-xlib。

在其他系统上,包带有相同名称的可能性很高。

【讨论】:

【参考方案5】:

我认为 Xlib 库不适用于 Python 3。

Source:

要求

Python X 库需要 Python 1.5.2 或更高版本。它已通过 Python 1.5.2 和 2.0 到 2.6 进行了不同程度的测试。

【讨论】:

【参考方案6】:

老实说,我无法解释为什么会这样......但这是让它为我工作的命令。

sudo apt-get install python3-xlib

不应该工作,因为 xlib 显然不能与 python 3.x 一起工作,但一切都安装好了,所以我没有抱怨!

【讨论】:

2021-10-12 在 xubuntu 21.04 上为我工作,但没有“3”的相同命令失败。【参考方案7】:

我一直在寻找相同的答案,但是经过更多挖掘后,XCB (X protocol C-language Binding) 似乎总体上会过时 Xlib。来自 XCB 网站:

X 协议 C 语言绑定 (XCB) 是 Xlib 的替代品,具有占用空间小、延迟隐藏、直接访问协议、改进的线程支持和可扩展性。

幸运的是,python 绑定可用作 python-xpyb in aptxpyb on PyPi。我的项目还没有走那么远,所以我没有测试这是否适用于 Python3,但这可能是可行的方法,也是在必要时提交任何 Python3 支持错误的适当位置。

【讨论】:

python-xlib 不是 C 语言 Xlib 库的包装器,它是 X 协议的纯 python 实现。因此,打算替换 C 语言 Xlib 的 XCB 对 python-xlib 库没有影响。【参考方案8】:

场景:

我试图使用pyautogui 包的屏幕截图功能。我收到了这个错误:

Traceback (most recent call last):
  File "test_screenshot.py", line 1, in <module>
    import pyautogui
  File ".../miniconda3/envs/myenv/lib/python3.7/site-packages/pyautogui/__init__.py", line 152, in <module>
    from . import _pyautogui_x11 as platformModule
  File ".../miniconda3/envs/myenv/lib/python3.7/site-packages/pyautogui/_pyautogui_x11.py", line 7, in <module>
    from Xlib.display import Display
ModuleNotFoundError: No module named 'Xlib'

Python 代码 (test_screenshot.py):

import pyautogui
img = pyautogui.screenshot('test.png')

环境:

Ubuntu 16.04 (LTS) conda 4.5.11 Python 3.7 (Miniconda)

requirements.txt:

certifi==2019.3.9
Pillow==5.4.1
PyAutoGUI==0.9.42
PyGetWindow==0.0.4
PyMsgBox==1.0.6
PyRect==0.1.4
PyScreeze==0.1.20
PyTweening==1.0.3

解决方案:

我在 conda 环境中安装了python-xlib 包,使用:

pip install python-xlib

现在test_screenshot.py 正在运行,没有任何错误。

更新requirements.txt:

certifi==2019.3.9
Pillow==5.4.1
PyAutoGUI==0.9.42
PyGetWindow==0.0.4
PyMsgBox==1.0.6
PyRect==0.1.4
PyScreeze==0.1.20
python-xlib==0.25
PyTweening==1.0.3
six==1.12.0

【讨论】:

以上是关于导入 python-Xlib 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Python导入模块问题

python 导入模块问题

关于ORACLE数据库导入的问题

一次导入eclipse中的所有导入?

POI 实现导入Excel 导入问题

C#Excel导入多条数据到数据库,怎么解决性能问题可以快速导入