Я только что прочитал документацию 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?