WindowsError: [错误 193] %1 不是有效的 Win32 应用程序在 Python 中
我想在64位的Windows系统上,用Python 2.7导入liblas模块。如果我在IDLE(Python的图形界面)中导入这个模块,没什么问题。
但是如果我用PyScripter这个软件,安装了"PyScripter-v2.5.3-x64-Setup.exe",就会出现这个错误信息。
>>> import liblas
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\Python27\lib\site-packages\liblas\__init__.py", line 2, in <module>
from core import get_version
File "C:\Python27\lib\site-packages\liblas\core.py", line 138, in <module>
las = ctypes.CDLL(os.path.join(local_dlls, lib_name))
File "C:\Python27\Lib\ctypes\__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 193] %1 is not a valid Win32 application
我之前在PyScripter中用过liblas很多次,都没有问题,现在我可以加载所有的标准模块(比如:numpy、GDAL等),可是今晚(我需要完成一个分析!!!)却遇到了这个麻烦。
4 个回答
你可能在使用64位的Python。你应该安装32位的版本。
这个错误可能是因为你要运行的DLL文件是用更新版本的C++编译的。确保你安装了最新版本的微软C++运行库。
你可以在Python的终端窗口看到你当前使用的版本(加粗部分是重点)
Python 3.5.1 (v3.5.1:37a07cee5969, 2015年12月6日, 01:38:48) [MSC v.1900 32位 (Intel)] 在win32上运行
你可以在这里下载
https://www.microsoft.com/en-us/download/details.aspx?id=48145
请确保你使用的是 Python 2.7 的 64 位版本 :) 否则即使你在 64 位的操作系统上,也要使用 PyScripter 的 x86(也就是 32 位)版本。
编辑 1(根据与 Gianni 的评论交流)
你需要确认你的整个 Python 过程是由相同类型的组件构成的,也就是说要注意 32 位和 64 位的版本(例如,如果你的 Python 解释器是 32 位的,那么它必须使用来自 C 的 DLL 的 C 类型,这些 DLL 是以 32 位的方式编译的)。
在我们的例子中(liblas),你应该去 C:\Python27\lib\site-packages\liblas
,找到扩展的 DLL,然后通过 dumpbin 查看它的类型,这里有一张示例图片: