我用于在Linux下使用Cython编译自制的python扩展。在Linux上,我使用distutils生成一个“myext.so”,然后我可以简单地添加到我的PYTHONPATH
并获得import myext
python调用。
现在,我试图让它在Windows 7下工作(使用Cython 0.18)。
我成功地运行了distutils,现在我得到一个myext.pyd
文件。但似乎(http://docs.python.org/2/faq/windows.html#is-a-pyd-file-the-same-as-a-dll)在Windows下添加“myext.pyd”的路径是不够的。 “myext.py”应该是什么样的,换句话说,在我的Python(2.7)安装中可以获得扩展的程序是什么。
注意:在将包含“myext.pyd”的目录添加到PYTHONPATH后,我仍然得到:
python BdmLsim4.py -i model.xml
Traceback (most recent call last):
File "BdmLsim4.py", line 6, in <module>
import myext
ImportError: DLL load failed: module not found.
非常感谢。
答案 0 :(得分:1)
它清楚地写在您链接的文档中:
请注意
foo.pyd
的搜索路径为PYTHONPATH
,不一样 作为Windows用于搜索foo.dll
的路径。另外,foo.pyd 不需要出现来运行你的程序,而如果你链接你的程序 用dll编程,dll是必需的。当然,foo.pyd是 如果你想说导入foo,则需要。在DLL中,声明了链接 在源代码中使用__declspec(dllexport)。在.pyd中,链接是 在可用功能列表中定义。
所以你应该将你的.pyd
文件放在python的安装目录(site-packages
)中,或者你可以修改环境变量PYTHONPATH
并添加.pyd
所在的目录放置。
另一种方法是使用.pth
文件来扩展PYTHONPATH
。