在PC之间移动自定义python模块时的ImportError

时间:2012-01-16 06:17:50

标签: python module wrapper

我有一个用C ++编写的算法,我想在ArcGIS中使用它。 Arc支持python脚本,所以我想我会编写一个python包装器。我在我的开发PC上构建了python,然后构建了一个模块(称为“delaunay”,用于计算Delaunay三角剖分)来包装算法。在那台PC上我使用cygwin和mingw g ++并将我构建的.dll放入/usr/local/lib/python2.6/site-packages。工作正常。

所以现在我正试图让它在我运行GIS的PC上工作。 ArcGIS安装python作为其自身安装的一部分,因此我将.dll放在/Python26/ArcGIS10.0/Lib/site-packages(位于sys.path中)并尝试导入它。我收到以下错误:

ImportError:没有名为delaunay的模块

将delaunay.dll重命名为delaunay.pyd并收到此错误:

ImportError:DLL加载失败:找不到指定的模块。

我觉得如果我将源代码放在GIS机器上并使用distutils构建并安装它,我觉得它有用,但我真的不想在那台机器上安装cygwin或Visual Studio。

无论如何,我不知道为什么我会得到不同的消息,消息的意义是什么,或者这是否会起作用(即ArcGIS与Python的发行版不兼容'因为我们使用了不同的编译器?) 此外,开发机器具有2010年6月12日的Python 2.6.5修订版,而GIS机器具有2010年3月19日的修订版。也许这很重要?

帮助?

2 个答案:

答案 0 :(得分:0)

运行python -vvv,你会看到导入调试信息。

您可能正在混合使用32位和64位二进制文​​件。来自不同Python构建的二进制文件是不兼容的。

答案 1 :(得分:0)

  

将delaunay.dll重命名为delaunay.pyd并收到此错误:

     

ImportError:DLL加载失败:找不到指定的模块。

听起来像delaunay.pyd取决于其他一些未找到的dll。