我正在用python编写一个程序来模拟粒子的反应,目的是教导用户关于粒子反应。由于python在进行必要的处理时速度太慢,我转向Cython寻求提高速度的方法,并且它很有用。我可以将我的.pyx
文件编译为.pyd
文件,该文件可以通过简单的import
语句(即“导入模块”)从python导入和运行。Cython pyd文件不能通过python导入
但是,该程序最终必须在另一个人的计算机上运行,并且在此计算机上,将不会导入该文件.pyd
。当我尝试我收到此错误信息:
"ImportError: DLL load failed: The specified module could not be found."
的.pyd
文件是完全相同的两台计算机上的相同位置,但是,我正在运行的Python 3.6,而在另一台计算机上安装有Python 3.3。另外,我的电脑安装了Cython,而另一台电脑则没有。这两台机器都是32位的。
我不能简单地将整个程序编译为.exe
文件,因为其他计算机在.exe
文件上有块。
我已经浏览了关于Cython的堆栈问题,并且还研究了Cython文档,但都无济于事。
有人可以向我解释为什么导入不起作用,以及我如何才能使其工作?关于.pyd
文件的一些额外背景以及python如何调用它们也会很好。
编辑:我从名为main.py的文件运行该程序。在同一个目录中,我有一个名为main的文件夹,它存储我在模块中使用的代码。 main.py调用PageManager.py,调用ParticleModel.py,调用MoveParticles.pyd。 (这三个文件存储在文件夹主文件夹中)。我使用声明
"import main.MoveParticles"
导入.pyd文件,它在我的电脑上工作。
我编辑了我的问题以提供这些详细信息。不幸的是,我无法获取图片上传,否则我会告诉你实际的文件... –
你的setup.py的外观如何?从进口distutils.core设置 从Cython.Build进口cythonize – ead
#cython设置文件 设置(ext_modules = cythonize(MYFILEPATH.pyx)) 我编译我.pyx文件,然后从移动所得.pyd文件我的Python文件夹到我的主文件夹(以前引用) –