2016-05-24 17 views
0

Mein aktuelles Projekt ist in Python. Für Build Package Generation + Unit-Test läuft, verwende ich Pybuilder Dienstprogramm und es ist ziemlich cool. Ich habe die Radverteilung verwendet, um das Modul in anderen Systemen zu installieren.Pybuilder - Non-Python-Dateien sind nicht gepackt

Es gibt eine Konfigurationsdatei, von der bestimmte Einstellungen von der Anwendung gelesen werden. settings.ini Datei ist in folgendem Pfad,

PROJECT-ROOT 
    |---- src 
      |-main 
       |-python 
        |- foo 
         |- conf 
         | |- settings.ini 
         | 
         |-test.py 
         |-access.py 

pybuilder erstellt automatisch setup.py vom build.py Skript. Das Problem ist, dass die binäre Wheel-Distribution nicht packt die Nicht-Python-Dateien (*. Ini-Datei). Bei der Suche nach SO-Posts erhalten Sie Informationen wie das Hinzufügen von MANIFEST.mf, um dieses Problem zu beheben. Aber während das Hinzufügen

project._manifest_include_directory('foo/conf', ('*.ini',)) 

Es nur foo/conf/settings.ini in Sdist und nicht auf dem bdist (Rad) aktualisiert. I möchte, dass die Raddatei die Datei settings.ini im Verzeichnis conf/ enthält. Beim Googeln wurde festgestellt, dass das Hinzufügen des Feldes package_data in setup.py das Problem beheben wird. Aber mit build.py von Pbie Builder kann ich das nicht erfolgreich durchführen.

Kann mir jemand helfen, dieses Problem zu lösen?

Antwort

2

Ich habe Max (https://github.com/mriehl) per E-Mail geschickt, die unter den Mitwirkenden von PyBuilder-Code in Github ist. Er schlug mir vor, project.install_file() Option zu versuchen.

Ich habe diese Option ausprobiert und es hat für mich funktioniert. Danke an Max. Ich möchte diese Informationen in diesem Thread teilen, so dass es für jemanden in Zukunft nützlich sein wird!

Im Hintergrund ist project.install_file() modifizierenden data_files Teil setup.py von distutils.

Meine Konfiguration im build.py sind wie folgt,

@init 
def initialize (project): 

    # File is installed relative to sys.prefix 
    project.install_file("Lib/site-packages/foo/conf","foo/conf/settings.ini")