Что происходит с «чистыми» пакетами Python + Cython во время сбоя при установке? - PullRequest
0 голосов
/ 17 февраля 2020

Я только что прочитал документацию Cython Pure Python Mode , и я не уверен, правильно ли я ее понял. Звучит так, как будто я могу сохранить все мои Python файлы такими, какие они есть, добавить *.pxd файлы, где я объявляю типы Cython. В setup.py я все еще добавляю

from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize(
        "A.py",
        compiler_directives={'language_level' : "3"}
      )
)

Когда я запускаю python setup.py build_ext --inplace, он на самом деле создает файл .so.

Что происходит, когда я создаю sdist / bdist, загружаю их к PyPI и пользователь не имеет соответствующей платформы? Они обязательно загрузят sdist. Я думаю, pip / setuptools автоматически попытается скомпилировать модули расширения (A.py), и я думаю, если это работает, это нормально. Но что, если Cythonize не удается? Будет ли он по-прежнему устанавливать пакет и использовать чистый код Python?

1 Ответ

0 голосов
/ 18 февраля 2020

Я так не думаю. Я считаю, что ошибка в setup.py полностью прерывает установку.

Вы можете попытаться объявить расширение необязательным , но есть отчеты , которые на самом деле не работают. Может быть проблема со старыми setuptools.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...