【问题标题】:Can I create wheel distributions of packages containing cython for other platforms?我可以为其他平台创建包含 cython 的软件包的轮式分发吗?
【发布时间】:2020-05-31 20:24:42
【问题描述】:

当我使用包含 cython 代码的包的 python setup.py bdist_wheel 创建一个轮子分发时,平台标签适合我当前的平台。像 numpy / scipy 这样的项目在网上有很多不同的轮子,我猜他们使用像 Travis / Azure Piplelines 这样的 CI / CD 平台。但是,我想知道:我可以只使用我的计算机为我自己的平台以外的其他平台创建包含 cython 的软件包的轮式分发吗?

MVCE

fib.pyx

def fib_iterative_cython(int n):
        cdef long long a = 0
        cdef long long b = 1
        for i in range(n - 1):
            a, b = b, a + b
        return b

setup.py

from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("fib.pyx")
)

【问题讨论】:

    标签: python cython setuptools python-wheel


    【解决方案1】:

    简短回答:不。

    更长的答案:您可以分发 sdist(源分发)。这迫使用户编译源代码,因此他们必须安装开发工具。 pip install 主要处理编译,除了Cython:你需要先教你的用户安装Cython

    详细回答:没有。部分是 Python 的错,但大部分不是。很多层面都存在问题。首先,交叉编译器是有问题的,而交叉链接器更是如此。其次,setuptools 不知道任何交叉编译器。

    解决方案:构建 C 模块的唯一方法是在虚拟机或 Docker 容器中本地构建它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多