Cython сгенерировал файлы c / cpp в поэзии sdist tar.gz для установки без использования cython - PullRequest
1 голос
/ 27 февраля 2020

Я использую Poetry для сборки tar.gz. и. мой пакет. Документы Cython рекомендуют распространять сгенерированные c файлы Cython наряду с PyX. http://docs.cython.org/en/latest/src/userguide/source_files_and_compilation.html#distributing -cython-modules

Что я должен добавить к build.py или pyproject.toml для генерации файлов c / cpp, вызывая poetry build и poetry build -f sdist?

Я попробовал это (из Создать пакет с помощью Cython, чтобы пользователи могли установить его без уже установленного Cython ):

build.py:

from setuptools.command.build_ext import build_ext
from setuptools.command.sdist import sdist as _sdist
...
class sdist(_sdist):
    def run(self):
        # Make sure the compiled Cython files in the distribution are up-to-date
        self.run_command("build_ext")
        _sdist.run(self)

def build(setup_kwargs):
    setup_kwargs.update({
        ...
        'cmdclass': {'sdist': sdist,
                     'build_ext': build_ext}
    })

Не работал для меня.

1 Ответ

2 голосов
/ 01 марта 2020

Текущая версия poetry (1.0.5) игнорирует пользовательский build.py при сборке sdist, поэтому без изменения poetry нет никаких шансов. Между тем, вы можете использовать сторонние проекты, такие как taskipy, чтобы заменить команду poetry build на пользовательскую, например,

# pyproject.toml

...

[tool.poetry.dev-dependencies]
cython = "^0.29.15"
taskipy = "^1.1.3"

[tool.taskipy.tasks]
sdist = "cython fib.pyx && poetry build -f sdist"

...

и выполнить poetry sdist вместо poetry build -f sdist.

...