在64位机器上,且使用64位python,pip install PyAutoIt的过程
中,可能会报如下错误:
File "c:program filespython37libctypes\__init__.py", line 356, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 193] %1 不是有效的 Win32 应用程序。 ----------------------------------------
解决方法:
手动下载pyautoit:https://pypi.org/project/PyAutoIt/
解压将其保存到本地...Python37Libsite-packages 中,此目录为Python安装包存放目录。
将autoit文件夹中的autoit.py文件打开,将
dll = "AutoItX3.dll"
改为
dll = "AutoItX3_x64.dll"
保存完成,运行
python setup.py install
即可
原因:
可以注意到,在刚才改过代码下面,有一个if判断:
bit, _ = platform.architecture() if "(x86)" in os.environ['PROGRAMFILES'] and bit == "64bit": # if 64bit version of python within 64bit version of Windows, # load AutoItX3_x64.dll dll = "AutoItX3_x64.dll"
在交互式命令行中运行:
os.environ['PROGRAMFILES']
会发现结果是:
C:Program Files
32位系统是:
C:Program Files (x86)
所以问题应该出if的第一个条件中,大概率是作者的源码写错了,导致在64位平台下无法正确引用对应位数的dll
参考文档:
链接:https://www.jianshu.com/p/0d7415bab999