公司最近在研究RPA,于是我想整一个pyautogui试试。结果我怀疑我是全网遇到最多坑的人,先记一下这些坑的处理方法。我的环境是win10+py3.7+anaconda解释器
pyautogui直接下载地址
最近pip问题很多,先考虑的是直接下载。
点Download files,下载右侧的PyAutoGUI-0.9.50.tar.gz,解压后,进入解压目录执行python setup.py install,再用
import pyautogui
检查是否安装成功就行了。正常情况下这是最稳健的方法,但是出了问题就不知道哪里出事了,只能用回pip。
就直接
pip install pyantogui
第一个问题是:
ERROR: Command errored out with exit status 1:
command: 'e:\anaconda3\python.exe' 'e:\anaconda3\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\Admin\AppData\Local\Temp\pip-build-env-51nx2rxx\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools>=40.8.0' wheel
cwd: None
Complete output (14 lines):
Traceback (most recent call last):
File "e:\anaconda3\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "e:\anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "e:\anaconda3\lib\site-packages\pip\__main__.py", line 23, in <module>
from pip._internal.cli.main import main as _main # isort:skip # noqa
File "e:\anaconda3\lib\site-packages\pip\_internal\cli\main.py", line 5, in <module>
import locale
File "e:\anaconda3\lib\locale.py", line 16, in <module>
import re
File "e:\anaconda3\lib\re.py", line 143, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
----------------------------------------
ERROR: Command errored out with exit status 1: 'e:\anaconda3\python.exe' 'e:\anaconda3\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\Admin\AppData\Local\Temp\pip-build-env-51nx2rxx\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools>=40.8.0' wheel Check the logs for full command output.
这是在安装关联的pymsgbox的时候出现的问题;解决方法下面再说
搞定pymsgbox后又出现了了第二个问题:
Using cached https://files.pythonhosted.org/packages/01/ed/56d4a369c6e18f6b239
d9ef37b3222ba308bfebf949571b2611ff7d64f1d/PyGetWindow-0.0.8.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "" , line 1, in
File "C:\Users\80237102\AppData\Local\Temp\pip-install-m1k3v484\pygetwindo
w\setup.py", line 13, in
long_description = fh.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 905: ille
gal multibyte sequence
Command "python setup.py " failed with error code 1 in C:\Users\Admin
\AppData\Local\Temp\pip-install-mv1k3848\pygetwindow\
这次是pygetwindow在作妖;
解决后又遇到了pillow的问题,这次错误太长不贴了。
经过摸索以后发现全都是版本的对应问题,PyautoGui版本太新,对应的其它三个包不能太旧;但是坑的地方就在这里,目前最新的pymsgbox(1.0.8)是有点问题的,然后最新的pillow搭配PyautoGui也有可能会卡死,在经过多次尝试以后,我建议使用如下的组合配置:
pip install pillow==7.1.0
pip install pymsgbox==1.0.6
pip install pygetwindow==0.0.8
pip install pyautogui==0.9.35
pillow版本应高于5.2.0,但最好不要用最新的7.2.0
pymsgbox最好不要用最新的1.0.8
pygetwindow的0.0.4和0.0.6有点问题,要么用最新,要么直接用0.0.1
pyautogui也用回以前的版本,不高于0.9.35比较稳定
这样就算成功安装了。此外pillow推荐一个豆瓣的源
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow
最后,我在网上浏览的时候,看到博主@xianyirenx 在安装过程中出现了一个warning,这是因为在安装过程中打开了fiddler,关掉就好,博客传送门。
安装完成后,尝试一下import和一些简单指令
import pyautogui
# 获取鼠标位置和屏幕分辨率
currentMouseX, currentMouseY = pyautogui.position()
screenWidth, screenHeight = pyautogui.size()
print ("X轴:{},Y轴:{}".format(currentMouseX, currentMouseY))
print ("屏幕分辨率是{}*{}".format(screenWidth, screenHeight))
输出:
X轴:1214,Y轴:742
屏幕分辨率是1920*1080
关于pyautogui的教程网上有很多,这里不介绍了。pip pyautogui的坑主要在于几个包的版本对应问题,梳理好版本后就OK了,当然还是推荐直接下载安装。