[python] distutils pakt niet alle files in

Pagina: 1
Acties:

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Ik heb een python scriptje gemaakt en wil hier een package van maken mbv distutils.
Het geheel bestaat uit de files adslconnect.py, hetnet.py adslconnect.glade Connected.png en Disconnected.png; deze staan allemaal in dezelfde directory.
Ik heb het volgende setup scriptje gemaakt:
code:
1
2
3
4
5
6
7
from distutils.core import setup

setup(
    ...,
    py_modules=["adslconnect", "hetnet"],
    data_files=[("",["adslconnect.glade","Connected.png", "Disconnected.png"])]
)


als ik een package maak met:
code:
1
python setup.py sdist
wordt er netjes een package gemaakt. Als ik deze uitpak, zie ik dat de files die in data_files worden opgesomd niet zijn ingepakt. Het zal wel een foutje in mijn setup.py zijn, maar ik zie niet waar die zou moeten zitten. Iemand hier wel?

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
*Schopje*

Verwijderd

Zo te zien ligt het er aan dat je het commando `sdist' gebruikt (Source Distribution). Bij mij doet hij het inderdaad ook niet, maar als ik `bdist' gebruik (default Build Distribution) werkt het wel (zij het dat het resultaat minder dan leuk is).

Als ik de manual er op na sla, lijkt het er op dat je een manifest file moet aanmaken om aan te geven welke bestanden er allemaal mee gedistribueerd moeten worden.

Maar misschien dat je beter af bent met een build distribution. En uiteindelijk is `bdist_wininst' natuurlijk het leukste ;) (dwz, als je Windows gebruikt natuurlijk).

[ Voor 5% gewijzigd door Verwijderd op 12-11-2004 15:13 ]


  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 10-05 16:54
Verwijderd schreef op vrijdag 12 november 2004 @ 15:12:
Als ik de manual er op na sla, lijkt het er op dat je een manifest file moet aanmaken om aan te geven welke bestanden er allemaal mee gedistribueerd moeten worden.
Yep, in een hypothetische "distutils 2" zullen data files en scripts waarschijnlijk automagisch meegenomen worden in de distributie. Totdat iemand daar aan gaat werken zul je ze echter expliciet in je MANIFEST.in moeten aangeven.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Verwijderd

Johannes schreef op vrijdag 12 november 2004 @ 20:27:
[...]

Yep, in een hypothetische "distutils 2" zullen data files en scripts waarschijnlijk automagisch meegenomen worden in de distributie. Totdat iemand daar aan gaat werken zul je ze echter expliciet in je MANIFEST.in moeten aangeven.
Wel een beetje vreemd. Het is niet alsof er geen mechanisme voor is, want de data_files lijst wordt wel gewoon meegeïnterpreteerd in andere distributietypes.

Waarom wordt er dan voor een source distribution een uitzondering gemaakt? :?

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 10-05 16:54
Note: dit is niet volledig gecheckt, en ik ben ook niet helemaal nuchter, maar volgens mij klopt het wel.

Ik heb net even in de distutils source zitten kijken, en het is niet zozeer dat er een uitzondering wordt gemaakt voor de source distributie, maar het is zo dat bdist_wininst een uitzondering is. Thomas Heller heeft wel support voor data files toegevoegd aan bdist_wininst (zie rev 1.13 van de CVS logs), maar nooit aan de andere commando's.

Overigens: in de andere commando's wordt waarschijnlijk geen rekening gehouden met data files omdat data files pas relatief laat in de development van distutils geintroduceerd werden. Het MANIFEST.in schema bestond toen al een tijdje. Bij het toevoegen van data files is er waarschijnlijk gewoon niet aan gedacht om die automatisch toe te voegen aan het package.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet

Pagina: 1