2012-10-08 71 views
0

我试图让一个python程序在Windows窗体上运行。 我有它在我开发的Windows中运行,但是当我把它转移到另一个Windows中我不断收到:ImportError DLL加载失败,但在命令行导入工作

导入错误:DLL加载失败:%1不是vaild的Win32 aplication

的痕迹表明,它是在导入时遇到麻烦,它基本上会经过几个内部的python程序(相互导入),然后进入ArcPy领域。最后似乎尝试过的最后一个是arcgisscripting。

当我在那个盒子上时,如果进入解释器并键入“import arcgisscripting”,我不会收到任何错误(只是一个新的光标),所以我开始认为这个错误有点误导。如果(例如)python代码编译为64位,并且您试图在32位python上运行,那么我通常会阅读这个错误。

一位同事建议,如果python找不到一些必要的代码,有时会发生错误。所以我检查并做了SET语句,现在PATH和PYTHONPATH变量似乎是等价的。我仍然得到这个错误,不知道该怎么做。我不希望在卸载问题框中重新安装它。该框是一个共享资源。

+0

目标盒上是否只安装一个Python版本? –

+0

这可能会帮助:http://stackoverflow.com/questions/8597126/cx-freeze-ldap-importerror-dll-load-failed-1-is-not-a-valid-win32-application – zeffii

+0

@卡里拉我相信目标框上只有一个python。在我的盒子里有两个蟒蛇(2.6和2.7),我用2.7来运行它。在目标框中,我看到2.7。 –

回答

0

终于找到了。 为arcgisscripting的.pyd文件(主要针对Python一个.dll)在C:\ Program Files文件(x86)的\ ArcGIS的\ Desktop10.1 \ BIN \ arcgisscripting.pyd

如果我点DependencyWalker在该文件它表示找不到几个依赖关系。

如此看来,解决办法是: 1)找到的最后一个文件的导入错误标记 2)寻找文件系统上的 3)对.pyd运行DependencyWalker其.pyd文件,以找出缺少

+0

嗯......当我查找一些DependencyWalker所说的.dll文件时,错过了,看起来像其他让他们被标记的人也发现他们是红鲱鱼。也许DependencyWalker并非如此伟大的诊断...... –

+0

原来是安装ArcGIS软件的问题。当ArcGIS重新安装时,问题就消失了。 –

0

我最近从经历同样的痛苦中学到了一些经验教训。

有几个检查首先运行。 1.检查您的所有组件是否都在相同的操作系统基础上运行,即64位或32位。如果您的机器是64位安装,请确保您有64位版本的python。同样适用于安装Oracle Instant Client;如果你的机器正在运行,它也需要是64位。

  • 如果你想exe文件实际上独立软件时,将不得不打包Oracle Instant客户端,并设置系统路径变量。

  • 它的最简单的运行方式是py_installer,它运行得非常好,但我仍然在努力包含即时客户端安装程序。

  • 导入cx_oracle设置这些系统路径之前

    instantClientPath是路径到即时客户端文件夹

  • enter code here os.environ [ “PATH”] = instantClientPath + “;” + OS。 environ [“PATH”] enter code here os。ENVIRON [ “ORACLE_HOME”] = instantClientPath enter code here os.environ [ “LD_LIBRARY_PATH”] = instantClientPath enter code here os.environ [ “TNS_ADMIN”] = instantClientPath enter code here os.environ [ “NLS_LANG”] = “AMERICAN_AMERICA.WE8MSWIN1252”

    相关问题