WindowsError: [错误 193] %1 不是有效的 Win32 应用程序在 Python 中

4 投票
4 回答
46240 浏览
提问于 2025-04-17 18:53

我想在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 个回答

1

你可能在使用64位的Python。你应该安装32位的版本。

2

这个错误可能是因为你要运行的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

3

请确保你使用的是 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 查看它的类型,这里有一张示例图片:

在这里输入图片描述

撰写回答