Sto creando un file setup.py
per un progetto con alcuni moduli di estensione Cython.setup_requires con Cython?
ho già ottenuto questo lavoro:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
ext_modules=cythonize([ ... ]),
)
Questo installa bene. Tuttavia, questo presuppone che Cython sia installato. Cosa succede se non è installato? Capisco che questo è ciò che il parametro setup_requires
è per:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
setup_requires=['Cython'],
...,
ext_modules=cythonize([ ... ]),
)
Tuttavia, se Cython non è già installato, questo sarà ovviamente venga meno
$ 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
Qual è il modo corretto di fare questo? Ho bisogno di importare in qualche modo Cython
solo dopo l'esecuzione del passo setup_requires
, ma ho bisogno di Cython
per specificare i valori ext_modules
.
Questo è un po 'hacky, e tuttavia, piuttosto fresco! Non sapevo che lo script è stato rieseguito, questo ha molto senso. – Claudiu
Hmm, quindi se installo senza aver prima installato Cython, l'installazione funziona (installa Cython) ma i moduli di estensione non sono installati (non è possibile importarli dagli script). Qualche idea su cosa potrebbe accadere? – Claudiu
Curioso. Ah bene, non deve essere veramente ri-eseguito. Di solito non ho bisogno di 'Cython' per l'installazione, solo lo sviluppo. Invece di creare istanze 'Extension' con' cythonize', basta crearle direttamente sui file .c generati da 'Cython'. Leggi questo esempio https://github.com/mobiusklein/brainpy/blob/master/setup.py – mobiusklein