我正在setup.py为一个带有一些Cython扩展模块的项目创建一个文件.
我已经让这个工作了:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
ext_modules=cythonize([ ... ]),
)
Run Code Online (Sandbox Code Playgroud)
安装很好.但是,这假设已安装Cython.如果没有安装怎么办?我知道这是setup_requires参数的用途:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
setup_requires=['Cython'],
...,
ext_modules=cythonize([ ... ]),
)
Run Code Online (Sandbox Code Playgroud)
但是,如果尚未安装Cython,这当然会失败:
$ python setup.py install
Traceback (most recent call last):
File "setup.py", line 2, in <module>
from Cython.Build import cythonize
ImportError: No module named Cython.Build
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?我Cython只setup_requires需要Cython在步骤运行后以某种方式导入,但我需要为了指定ext_modules值.
我有一个完全在python中实现的python模块。(出于便携性原因。)
cython模块中已复制了一小部分的实现。在可能的情况下提高性能。
我知道如何使用来安装.ccython创建的模块distutils。但是,如果一台机器没有安装编译器,我怀疑即使该模块在纯python模式下仍然可用,安装也会失败。
有没有办法编译该.c模块(如果可能的话),但无法正常运行,如果无法编译,则在没有该模块的情况下进行安装?
cython ×3
python ×3
build ×1
cicd ×1
distutils ×1
distutils2 ×1
pypi ×1
setup.py ×1
setuptools ×1