1

我对常见的“ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序”错误有一个奇怪的变体。当我在 python27 目录之外运行 python 脚本时尝试导入第 3 方库时,我只会收到此错误。例如,如果我在 python27 中执行“import numpy”,它工作正常,但如果我尝试在任何其他目录中导入 numpy,我会收到上述错误。本质上,我可以在任何目录中运行“python”,但如果我从 python27 目录运行它,则只能导入第 3 方库。如果有人对为什么会这样有任何想法,我将不胜感激。这是有关我的系统路径的一些信息。

适用的 Windows 系统路径:

PYTHONPATH = C:\Python27\Lib

PYTHONHOME = C:\Python27

sys.path 等于:

['', 'C:\Python27\Lib', 'C:\WINDOWS\SYSTEM32\python27.zip', 'C:\Python27\DLLs', 'C:\Python27\lib\plat-win', 'C :\Python27\lib\libtk', 'C:\Python27', 'C:\Python27\lib\site-packages', 'C:\Python27\lib\site-packages\win32', 'C:\Python27\ lib\site-packages\win32\lib', 'C:\Python27\lib\site-packages\Pythonwin']

如果我运行 win_add2path.py 我得到: 没有添加路径

PATH 现在是:C:\Users\Mike\AppData\Local\Enthought\Canopy\User;C:\Users\Mike\AppData\Local\Enthought\Canopy\User\Scripts;C:\Python27;C:\Python27\脚本

展开:C:\Users\Mike\AppData\Local\Enthought\Canopy\User;C:\Users\Mike\AppData\Local\Enthought\Canopy\User\Scripts;C:\Python27;C:\Python27\Scripts

我的一部分感觉 Enthought Canopy 路径搞砸了(该目录不再存在),但 Python27 路径也在那里,所以它不应该成为问题......

编辑:我相信我现在知道是什么导致了问题,但不知道如何解决它。所以显然 enthought canopy 文件夹中有一个 python.exe,这是我的计算机正在使用的,而不是 python27 中的那个(这很奇怪,因为我卸载了 enthought canopy)。但是,即使该目录已添加到我的系统路径中,我的计算机现在也无法在 python27 中找到 python.exe ......它给了我旧的“python 未被识别为内部或外部命令”shindig。

编辑好吧,我重新启动了命令提示符,现在它可以工作了......我猜想删除树冠路径变量还没有生效。

4

2 回答 2

0

Python 模块要么是普通的 Python 脚本(这里我将忽略它们)要么是 DLL,即使它们的文件名并未表明它们是。您可以做的是在这样的模块上运行dependencywalker以找出它依赖的其他DLL。如果相应的 DLL 不在正常的系统位置,MS Windows 将在当前工作目录中搜索它,这解释了您遇到的差异。有关详细信息,请参阅 win32 函数LoadLibrary()和相关函数的文档以获取有关如何解析 DLL 路径的信息,这还将告诉您可以调整的选项以帮助系统找到相关的 DLL。

于 2015-06-11T20:20:00.210 回答
0

因此,作为参考,问题的根源是旧 Enthought Canopy 安装的残留物。计算机使用的是 python 的安装(没有安装第 3 方库),而不是 Python27 中的那个。我从系统路径中删除了该安装并重新启动命令提示符,现在一切正常。

于 2015-06-11T20:37:37.510 回答