Je développe un paquet contenant des extensions Cython.Est-il sûr d'appeler `setup()` plusieurs fois dans un seul `setup.py`?
Selon https://github.com/pypa/pip/issues/1958 je vais utiliser setup_requires
et reporter l'importation de Cython
. La meilleure solution que je suis venu avec est d'appeler setup()
deux fois dans setup.py
:
... # initial imports
setup(setup_requires=['cython'])
from Cython.Build import cythonize
bar = Extension('foo.bar', sources = ['bar.pyx'])
setup(name = 'foo',
... # parameters
ext_modules = cythonize([bar]),
... # more parameters
)
Cependant, j'ai le sentiment que le nom de setup()
suggère qu'il sera appelé une seule fois. Est-il sûr de l'appeler plusieurs fois comme je le fais?
Je ne peux pas simplement distribuer des roues parce que le paquet doit être disponible aussi pour les utilisateurs de Linux.
[EDIT]
Aussi je vois la question plus générale que de traiter avec le compilateur dépendances. On peut vouloir importer un paquet (par exemple sphinx
ou pweave
) pour prétraiter la description de son paquet.
« il analysera les arguments de ligne de commande et commencer à faire son travail "- c'est exactement ce qui m'a fait douter, mais est-il explicitement mentionné quelque part dans les docs? Quelqu'un peut vouloir injecter une dépendance non-compilateur dans un modèle similaire. – abukaj
@abukaj Il n'est pas mentionné dans les documents, mais vous pouvez facilement le trouver dans le [source] (https://bitbucket.org/carljm/python-distutils/src/48c42eeaee4410d76675b637bcd401b8919ff19a/core.py?at=default&fileviewer= file-view-default # core.py-59). Plus important encore: même si cela est sûr, le setuptools n'aide pas vraiment dans cette situation. – gdlmx