对于一个class级,我写了一个求解器来解决数值问题。 我的代码运行在IPython笔记本中,其中大部分代码是纯Python + NumPy + matplotlib,但性能关键部分是用Cython编写的(并且包含在IPython %%cython magic中)。 这位教授喜欢我的解决scheme,并要求我将它提供给一些本科生,他将教授另一个类的相似科目作为参考资料。 问题是,我不确定什么是分配我的代码的最佳方式。
我的主要问题是,大多math生可能运行windows。 在windows上编译Cython代码是我最后一次做的一个噩梦,因为你将不得不兼容几个不同的C编译器,直到find一个可行的代码。 对于想要运行我的笔记本来获得工作的Cython环境的每个学生来说,绝对是不能期望的。
我的想法是在windows机器上预编译代码的Cython部分(不需要由学生修改),并分发pyd文件。 所以我的问题是:
我可以期望我在windows上编译的Cython二进制文件可以在另一台windows机器上使用吗?
Cython安装问题
我如何使用cython编译扩展?
Cython的静态链接与Python运行时?
为什么windows上的Cython扩展取决于pythonXX.dll,而不是MacOSX?
15秒的空闲延迟加载windows本机python模块
在Python cythonize期间“Intel iCLS意外”错误
Cython独立可执行文件在Ubuntu上
即使在编辑PATH之后,也无法使CythonfindMinGW gcc编译器,在distutils中创build一个文件,删除-mno-cygwin的所有实例
如何将一个链接的DLL和一个pyd文件打包成一个自包含的pyd文件?
如何运行cython命令行选项
是的,只要python版本与Cython模块编译的版本( 包括x86 / x64差异)相匹配,您就可以期待二进制.pyd文件在不同的windows机器上运行。
在windows上构建扩展模块不再像以前那样困难。
最简单的方法是在安装程序中使用包含编译器的 Anaconda Python 。 这是目前可用的“Just Works”最接近的东西。 如果需要,还可以使用conda命令行工具来创建虚拟环境,从而使每个Python版本的二进制版本恢复到2.6,非常容易。 你几乎可以激活一个env,运行build( python setup.py bdist_wheel来创建一个.whl文件),为不同的Python版本激活下一个env,运行这个build,等等。 最后( *.whl )的砂轮文件可以复制到其他机器上,然后直接pip install blah.whl 。
使用股票Python也是可管理的,但需要更多的工作。 对于Python 2.7,您需要安装windows SDK 7.0 ,对于Python 3.4,您需要windows SDK 7.1 。 这些SDK提供了为x86和x64构建的编译器。 不幸的是,对于Python 3.5,你需要一个不同的东西, Visual Studio 2015 。 我的博客有一个简短的条目 ,更详细地介绍了2.7和3.4的设置。 (我仍然需要更新它为3.5)。
有几个工具可以使直接编译.pyx文件变得更容易。 Cython本身提供了一个命令行工具cythonize ,你可以使用它来构建这样的文件:
> cythonize -b blah.pyx
还有其他工具,比如我的easycython ,它提供的不是cythonize ,但有一些便利,比如可选的numpy支持和默认的优化编译器标志。 无论哪种方式,您可以复制.pyd扩展模块本身,并将其放置在Python路径的某处。 但轮子更好。
总结以上是内存溢出为你收集整理的将预编译的Cython代码分发到Windows全部内容,希望文章能够帮你解决将预编译的Cython代码分发到Windows所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)