pyautoit:OSError: [WinError 193] %1 不是有效的 Win32 应用程序

在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

原文地址:https://www.cnblogs.com/gexbooks/p/11169631.html