Я создаю файл setup.py
для проекта с некоторыми модулями расширения Cython.setup_requires с Cython?
Я уже получил эту работу:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
ext_modules=cythonize([ ... ]),
)
Это устанавливает штраф. Однако это предполагает, что Cython установлен. Что делать, если он не установлен? Я понимаю, что это то, что параметр setup_requires
для:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
setup_requires=['Cython'],
...,
ext_modules=cythonize([ ... ]),
)
Однако, если еще не установлен 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
Что такое правильный способ сделать это? Мне нужно как-то импортировать Cython
только после выполнения шага setup_requires
, но мне нужно Cython
, чтобы указать значения ext_modules
.
Это несколько Hacky, и все же, очень здорово! Не знал, что сценарий переработан, что имеет большой смысл. – Claudiu
Хмм, поэтому, если я устанавливаю без установки Cython, установка работает (устанавливается Cython), но модули расширения не установлены (их нельзя импортировать из скриптов). Какие-нибудь идеи о том, что может произойти? – Claudiu
Любопытный. Ах, хорошо, что он не должен быть действительно повторен. Обычно я не требую 'Cython' для установки, просто для разработки. Вместо того, чтобы создавать экземпляры 'Extension' с' cythonize', просто создавайте их непосредственно в файлах .c файлов 'Cython'. Оформить заказ в этом примере https://github.com/mobiusklein/brainpy/blob/master/setup.py – mobiusklein