我希望在64位窗口上导入Python 2.7中的liblas模块。如果我用IDLE(Python GUI)导入模块,我没有问题。
如果我使用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等),但今晚(我需要完成分析!!!)我有这样的不便。
请确保使用Python 2.7 64b版本:)或者即使您使用的是64b操作系统,也请使用x86(AKA 32b)版本的PyScripter
编辑1(以下评论与Gianni交流)
在32b / 64b版本的意义上,应该验证他/她的整个Python进程是从相同实体“组成”的(例如,如果你的Python解释器是32b,那么它必须使用来自C dll Python扩展的C类型,编译为32b dll文件)。
在我们的例子(liblas)中,应该去C:\Python27\lib\site-packages\liblas
,找到扩展dll并通过dumpbin查看它的类型,这里有一些图片用于演示:
此错误也可能是由于Python尝试运行的DLL已在较新版本的C ++上编译而引起的。确保您运行的是最新版本的Microsoft C ++ Distribution。
您可以在Python终端窗口中看到正在运行的版本(以粗体突出显示)
win32上的Python 3.5.1(v3.5.1:37a07cee5969,2015年12月6日,01:38:48)[MSC v.1900 32位(英特尔)]
在这里下载
https://www.microsoft.com/en-us/download/details.aspx?id=48145
您可能正在使用64位Python。您应该安装32位版本。