将预编译的Cython代码分发到Windows

将预编译的Cython代码分发到Windows,第1张

概述将预编译的Cython代码发到Windows

对于一个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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1276553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存