我现在已经在Python程序包
simplerandom(BitBucket
repo-编辑:now
github)中亲自完成了这个任务(我不希望这是一个受欢迎的程序包,但这是学习Cython的好机会)。
此方法依赖于以下事实:
.pyx使用
Cython.Distutils.build_ext(至少使用Cython版本0.14)构建文件似乎总是
.c在与源
.pyx文件相同的目录中创建文件。
这是一个精简版,
setup.py希望其中包含要点:
from distutils.core import setupfrom distutils.extension import Extensiontry: from Cython.Distutils import build_extexcept importError: use_cython = Falseelse: use_cython = Truecmdclass = {}ext_modules = []if use_cython: ext_modules += [ Extension("mypackage.mycythonmodule", ["cython/mycythonmodule.pyx"]), ] cmdclass.update({'build_ext': build_ext})else: ext_modules += [ Extension("mypackage.mycythonmodule", ["cython/mycythonmodule.c"]), ]setup( name='mypackage', ... cmdclass=cmdclass, ext_modules=ext_modules, ...)
我还进行了编辑,
MANIFEST.in以确保将
mycythonmodule.c其包含在源分发中(使用创建的源分发
python setup.pysdist):
...recursive-include cython *...
我不承诺
mycythonmodule.c版本控制“ trunk”(或Mercurial的“
default”)。发布时,我需要记住先进行 *** 作
python setup.pybuild_ext,以确保
mycythonmodule.c该源代码是最新的并且是最新的。我还创建了一个release分支,并将C文件提交到该分支中。这样,我就拥有与该发行版一起分发的C文件的历史记录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)