我有一个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安装它安装正确的东西,无论我以前建立什么。
答案 0 :(得分:1)
setup.py
文件中定义 setup.cfg
个选项。
因此,setup.cfg
:
[build_ext]
force=1
每次都会强制进行编译。