使用distutils重新生成cython扩展

时间:2015-08-30 12:36:16

标签: python cython distutils

我有一个cython文件生成一个不同的shopId companyId date 1 1 25/8/2015 2 1 26/8/2015 3 1 22/8/2015 4 2 20/8/2015 5 2 27/8/2015 文件,具体取决于它是为python 2还是python 3编译的。即:

shopId companyId   date        dense_rank
1        2         27/8/2015       1
2        2         20/8/2015       1
3        1         26/8/2015       2
4        1         25/8/2015       2
5        1         22/8/2015       2

.c有这个:

from .mp_utils import PY3

if PY3:
    builtin = (int, float, str, complex)
else:
    builtin = (int, float, str, long, complex, file)

此扩展程序由distutils构建。 mp_utils有:

PY3 = sys.version > '3'

但是,cython不知道它必须在setup.py的每次调用时重建getsize = Extension( 'memprof.getsize', sources=['memprof/getsize.pyx'] ) setup( # [...] cmdclass={'build_ext': build_ext}, ext_modules=[getsize], )

.c

这是错误的,python setup.py install不是最新的,它是为python 2版本构建的# python3 setup.py test running test running egg_info writing dependency_links to memprof.egg-info/dependency_links.txt writing requirements to memprof.egg-info/requires.txt writing memprof.egg-info/PKG-INFO writing top-level names to memprof.egg-info/top_level.txt reading manifest file 'memprof.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'memprof.egg-info/SOURCES.txt' running build_ext skipping 'memprof/getsize.c' Cython extension (up-to-date) building 'memprof.getsize' extension [...] 。它必须重建。我如何告诉distutils(或cython)它必须在每次调用时重新生成memprof/getsize.c文件?

我知道我可以触摸getsize.c或只是手动删除.c,但你必须记住这样做,而不是我正在寻找的东西。我想要一些东西,当我做python3 setup.py安装它安装正确的东西,无论我以前建立什么。

1 个答案:

答案 0 :(得分:1)

可以在setup.py文件中定义

setup.cfg个选项。

因此,setup.cfg

中有类似内容
[build_ext]
force=1

每次都会强制进行编译。