【发布时间】:2019-10-24 18:59:43
【问题描述】:
我正在尝试使用可在 Windows 和 Linux 上运行的 python 截取屏幕截图。我读过pyscreenshot 可以胜任这项工作。但我有一个错误,文档似乎没有指定任何依赖项。
import pyscreenshot as ImageGrab
im = ImageGrab.grab()
im.show()
追溯:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/procutil.py", line 15, in _wrapper
r = target(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/__init__.py", line 33, in _grab_simple
return backend_obj.grab(bbox)
File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/plugins/wxscreen.py", line 39, in grab
im.frombytes(buffer(myWxImage.GetData()))
NameError: name 'buffer' is not defined
Traceback (most recent call last):
File "ambi.py", line 10, in <module>
im = ImageGrab.grab()
File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/__init__.py", line 67, in grab
to_file=False, childprocess=childprocess, backend=backend, bbox=bbox)
File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/__init__.py", line 46, in _grab
_grab_simple, imcodec.codec, to_file, backend, bbox, filename)
File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/procutil.py", line 37, in run_in_childprocess
raise e
NameError: name 'buffer' is not defined
我用sudo pip3 install pyscreenshot安装了它
我尝试安装wxscreen,但似乎没有找到具有该名称的软件包。
我不想使用模仿键盘输入的库,因为脚本会在玩游戏时在后台运行以监控统计信息。反作弊可能会被触发。
【问题讨论】:
-
buffer是 Python 2 中存在但在 Python 3 中不再存在的内置类型的名称。我猜 pyscreenshot 的维护者在移植它时错过了一个地方 :-) -
噢噢噢噢噢!这完全有道理。谢谢你启发我。
-
有趣的是,the most recent version of pyscreenshot's wxscreen.py确实在使用
buffer之前检查您是否使用 Python 2。也许您以某种方式使用了旧版本的软件包? -
看起来这个问题是noticed and fixed back in June,但由于 PyPi 发行版自 2018 年以来尚未更新,因此该修复程序尚未公开访问。如果你真的很想使用这个库,你可以直接从 github 获取它,而不是使用 pip。
-
@Kevin 或者只是从 github 进行 pip-install,请参阅 my answer。好奇:你是如何注意到 PyPi 自 2018 年以来没有更新的?我在release-history看到了
3.0 since Apr 18, 2021
标签: python screenshot