Ich erstelle eine setup.py
Datei für ein Projekt mit einigen Cython-Erweiterungsmodulen.setup_requires mit Cython?
Ich habe schon bekommen dies funktioniert:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
ext_modules=cythonize([ ... ]),
)
Das installiert in Ordnung. Dies setzt jedoch voraus, dass Cython installiert ist. Was ist, wenn es nicht installiert ist? Ich verstehe, das ist, was die setup_requires
Parameter sind für:
from setuptools import setup, Extension
from Cython.Build import cythonize
setup(
name=...,
...,
setup_requires=['Cython'],
...,
ext_modules=cythonize([ ... ]),
)
Wenn jedoch Cython nicht bereits installiert ist, wird dies natürlich fehlschlagen:
$ 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
Was ist der richtige Weg, dies zu tun? Ich muss irgendwie importieren nur nach dem setup_requires
Schritt läuft, aber ich brauche Cython
, um die ext_modules
Werte zu spezifizieren.
Das ist etwas hacky, und doch ziemlich cool! Wusste nicht, dass das Skript neu ausgeführt wird, das macht sehr viel Sinn. – Claudiu
Hmm, wenn ich also installiere, ohne dass Cython zuerst installiert wurde, funktioniert das Setup (es installiert Cython), aber die Erweiterungsmodule sind nicht installiert (können nicht aus Skripten importiert werden). Irgendwelche Ideen, was passieren könnte? – Claudiu
Neugierig. Ah, es muss nicht wirklich neu ausgeführt werden. Normalerweise benötige ich 'Cython' nicht für die Installation, sondern nur für die Entwicklung. Anstatt "Extension" -Instanzen mit "cythonize" zu erstellen, erstellen Sie sie einfach direkt in den 'Cython'-generierten .c-Dateien. Überprüfen Sie dieses Beispiel https://github.com/mobiusklein/brainpy/blob/master/setup.py – mobiusklein