我使用SWIG为使用SWIG编写的SDK编写了一个Python包装器,并使用Windows 7中的Microsoft Visual Studio 2010构建。
这是成功的,生成 module.py 和 _module.pyd 。但是,此包装器在很大程度上取决于位于PythonXY文件夹外的SDK文件夹中的几个.dll文件。
将 module.py 和 module.pyd 移动到 PythonXY / Lib / site-packages / 之后,尝试运行导入模块,发生以下错误:
ImportError: DLL load failed: The specified module could not be found.
然后,我尝试使用Python模块 os 中的 os.chdir()方法将Python工作目录更改为.dll文件所在的目录。这次,运行导入模块输出没有错误。我继续访问包装的C ++类和函数,它们工作正常。
我的问题是:
关键是我希望在多台Windows机器上尽可能地使这个包装器具有可移植性。
谢谢。
答案 0 :(得分:0)
我找到了让 module.py 找到 _module.pyd 的解决方案。
基本上,创建一个名为 module.pth 的新文件,并将其保存在与 module.py 相同的目录中。在这种情况下,目录是PythonXY / Lib / site-packages /.
假设您将 _module.pyd 放在名为 _modulelib 的目录(PythonXY / Lib / site-packages / _modulelib /)中,然后是的内容module.pth 应该是这样的:
_modulelib