导入 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 apt 或 xpyb 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 的问题的主要内容,如果未能解决你的问题,请参考以下文章