我正在开发一个包含Cython扩展的软件包。
根据https://github.com/pypa/pip/issues/1958,我将使用setup_requires并推迟的导入Cython。我想出的最好的解决方案是致电setup()两次setup.py:
... # initial imports
setup(setup_requires=['cython'])
from Cython.Build import cythonize
bar = Extension('foo.bar', sources = ['bar.pyx'])
setup(name = 'foo',
... # parameters
ext_modules = cythonize([bar]),
... # more parameters
)
Run Code Online (Sandbox Code Playgroud)
但是我有一种感觉,setup()建议的名称只能被调用一次。像我一样多次叫它安全吗?
我不能只分发轮子,因为该软件包也将对Linux用户可用。
[编辑]
我也认为这个问题比处理编译器依赖性更为笼统。可能需要导入一些软件包(例如sphinx或pweave)来预处理一个软件包的描述。