Wie kann ich mit setup.py einen relativen Pfad zu meinen Dateien erstellen?

9

Ich versuche eine Python-Distribution mit distutils zu erstellen. Leider sieht meine Verzeichnisstruktur so aus:

%Vor%

Hier ist meine setup.py -Datei:

%Vor%

Wenn ich python setup.py sdist ausführen, wird die Manifest-Datei korrekt generiert, aber meine Quelldateien werden nicht in die Distribution aufgenommen. Offensichtlich erstellt es ein Verzeichnis, das die Quelldateien enthält (d. H.% Co_de%) und kopiert dann jede der Quelldateien nach mypackage1 , wodurch sie außerhalb der der Distribution platziert werden.

Wie kann ich das korrigieren, ohne zu zwingen, dass meine Verzeichnisstruktur dem entspricht, was mypackage1/../mypackage erwartet?

    
Chris B. 01.05.2009, 17:00
quelle

5 Antworten

4

Welche Verzeichnisstruktur möchten Sie in der Distributionsarchivdatei haben? Das gleiche wie Ihre bestehende Struktur?

Sie könnten alles, was ein Verzeichnis höher ist ( code in Ihrem Beispiel), mit dieser modifizierten setup.py:

packen %Vor%

Sie würden dies ausführen (im Verzeichnis code ):

%Vor%

Oder wenn Sie dist innerhalb von build beibehalten möchten:

%Vor%

Ich mag die Verzeichnisstruktur, nach der Sie suchen. Ich hätte nie gedacht, dass setup.py speziell genug ist, um im Root-Code-Ordner zu sein. Aber ob es Ihnen gefällt oder nicht, ich denke, dass die Nutzer Ihrer Distribution das erwarten. Es ist daher nicht verwunderlich, dass Sie etwas austricksen müssen, um etwas anderes zu tun. Der data_files -Parameter ist ein Hack, um dein setup.py in die Distribution am selben Ort zu bringen, an dem du es gefunden hast.

    
Jon-Eric 02.05.2009 04:08
quelle
1

Führen Sie setup.py im Stammordner des Projekts aus

Platziere setup.py in deinem Fall in code /

code / sollte auch Folgendes enthalten:

  • LICENSE.txt
  • README.txt
  • INSTALL.txt
  • TODO.txt
  • CHANGELOG.txt

Wenn Sie "setup.py sdist" ausführen, sollte automatisch ein MANIFEST erstellt werden, einschließlich:  - Alle Dateien, die in py_modules und / oder Paketen angegeben sind  - setup.py  - README.txt

Um weitere Dateien hinzuzufügen, bearbeiten Sie einfach die MANIFEST-Datei, um alle anderen Dateien, die Ihr Projekt benötigt, aufzunehmen.

Für eine etwas anständige Erklärung dieses lesen Sie dies .

Um ein funktionierendes Beispiel zu sehen, .

Hinweis: Ich stelle das MANIFEST nicht unter Versionskontrolle, damit Sie es dort nicht finden.

    
Evan Plaice 15.06.2010 04:14
quelle
0

Eine sorta lame Problemumgehung, aber ich würde wahrscheinlich nur ein Makefile verwenden, das rsynced ./mypackage zu ./build/mypackage und dann die übliche distutils Syntax von innerhalb ./build. Tatsache ist, dass distutils erwartet, dass sie setup.py in den Stammordner des sdist entpackt und Code dort unter sich hat, so dass Sie eine Menge Zeit haben werden, es zu überzeugen, etwas anderes zu tun.

Du kannst die Kopie immer nuken, wenn du sauber machst, damit du deinen VCS nicht durcheinander bringen musst.

    
easel 01.05.2009 17:15
quelle
0

Vielleicht zuerst in das übergeordnete Verzeichnis wechseln?

%Vor%

usw.

Oder wenn Sie es von überall ausführen (das ist Overkill, aber ...):

%Vor%

usw. Nicht sicher, dass das funktioniert, aber sollte einfach zu versuchen sein.

    
Ken Arnold 03.05.2009 03:46
quelle
0

Auch eine lahme Problemumgehung, aber eine Junction / Link des Paketverzeichnisses innerhalb des Buildprojekts sollte funktionieren.

    
kutschkem 24.02.2015 09:33
quelle

Tags und Links