Ich habe eine kleine Hilfsfunktion test
mit sensiblen Code. Um diesen Code zu maskieren, habe ich die Funktion in hello.pyx
geschrieben und in meinem Paket mypackage
verwendet.Cython: Kontrolle Cythonize zu stoppen, um kompilierte `.c` Datei aus` .pyx` Datei im Installationsverzeichnis
ich in der Lage bin zu bauen und zu nutzen, indem die setup.py
für das Paket zu so etwas wie unten ändern:
import os
from setuptools import setup, find_packages
from Cython.Build import cythonize
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
setup(
name='mypackage',
ext_modules = cythonize('mypackage/hello.pyx'),
packages=find_packages(),
include_package_data=True,
)
Allerdings, wenn ich bauen/installieren Sie es über python setup.py
oder pip install
erzielte die cython hello.c
sowie als hello.so
im Installationsverzeichnis gestellt werden immer (in meinem Fall ~/.local/python2.7/site-packages/mypackage/
)
ich die hello.c
aus dem Verzeichnis manuell entfernen kann installieren (so dass nur die hello.so
-Datei) und das Paket r Uns geht es gut.
Gibt es eine Möglichkeit, diesen Prozess zu automatisieren, so dass ich die kompilierte c
Datei nicht manuell entfernen muss?
Ich schaute auf diese stackoverflow question. Allerdings bekomme ich einen Fehler während der Cythonize-Operation, wenn ich versuche, das Rad mit pip wheel .
zu bauen. Auch in meinem Fall bin ich gut mit der Installation so lange mit tar.gz als die installierte Code nicht reine Textdateien enthält für hello.c
[Bearbeiten]
konnte ich eine .c
Datei in stoppen Platzierung das Installationsverzeichnis mit include_package_data=False
in meinem setup.py
.. Allerdings bin ich nicht genau sicher, ob diese Option für nicht Python-Dateien im Projekt
Haben Sie 'MANIFEST.in' in Ihrem Projektverzeichnis haben? Wenn ja, was enthält es? –
Es gibt keine 'MANIFEST.in' .. btw nur aktualisiert die Frage – goofd