相关疑难解决方法(0)

使用Cython进行setup_requires?

我正在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)

这样做的正确方法是什么?我Cythonsetup_requires需要Cython在步骤运行后以某种方式导入,但我需要为了指定ext_modules值.

python software-distribution build setuptools cython

23
推荐指数
2
解决办法
7735
查看次数

使用诗歌打包使用 cython 的库的最佳实践

我一直习惯于poetry开发 python 包。现在我想在一个新项目中使用 Cython,但我对如何构建库有点困惑,是否使用 asetup.py而不是使用poetry

我看过关于如何在包中包含代码(带有 a )但不使用诗歌的帖子(像这样)。其他人,这个(和这个)确实如此,但它们依赖于脚本,并且其中一个评论中说,如果未安装,该方法将不起作用。cythonsetup.pybuild.pygcc

那么,使用诗歌打包(并发布到 PyPI)使用 cython 的库的最佳实践是什么?

python cython pypi python-poetry cicd

5
推荐指数
0
解决办法
911
查看次数

仅在setup.py中可能时编译可选的cython扩展

我有一个完全在python中实现的python模块。(出于便携性原因。)

cython模块中已复制了一小部分的实现。在可能的情况下提高性能。

我知道如何使用来安装.ccython创建的模块distutils。但是,如果一台机器没有安装编译器,我怀疑即使该模块在纯python模式下仍然可用,安装也会失败。

有没有办法编译该.c模块(如果可能的话),但无法正常运行,如果无法编译,则在没有该模块的情况下进行安装?

python distutils cython setup.py distutils2

4
推荐指数
1
解决办法
973
查看次数