Ich entwickle ein Python-Ei, das mehrere. TXT-Abhängigkeiten hat (sie sind Vorlagen, um Dateien durch das Ei selbst zu generieren), und ich habe Schwierigkeiten, diese Abhängigkeiten zu site-packages
während kopiert setup.py install
. Nach dem distribute
documentation ...Packaging-Ressourcen mit setsetools/distribute
Dateisystem meines Pakets:
setup.py
package
|--- __init__.py
|--- main.py
|--- binary (calls main.py with pkg_resources.load_entry_point)
|--- templates
|--file1.txt
|--file2.txt
In setup.py:
setup(
[...]
eager_resources = ['templates/file1.txt', 'templates/file2.txt']
)
In meinem Paket:
from pkg_resources import resource_string
tpl = resource_string(__name__, 'templates/file1.txt')
... diese Kombination von Konfiguration und Dateisystem sollte file1.txt
ergeben und file2.txt
über pkg_resources.resource_string
verfügbar sein. Leider werden sie nicht unter site-packages
während setup.py install
kopiert. Was vermisse ich?
Danke! http://peak.telecommunity.com/DevCenter/setuptools#including-data-files
Grundsätzlich müssen Sie nur einstellen include_package_data=True
in Ihrem setup.py-Datei: Paketdaten für einschließlich hier
Ausgezeichnet, danke für die Hilfe. Würde es Ihnen etwas ausmachen, den Unterschied zwischen "Datendateien" und "Ressourcen" zu klären, wie dies in der Dokumentation zu setuptools definiert ist? Ich habe die Anweisungen für Ressourcen befolgt, aber sie scheinen qualitativ anders zu sein. Vielen Dank! –
Nun, deine Frage war das erste Mal, dass ich auf "Ressourcen" stieß, also bin ich auch neugierig, wofür sie sind. Aber Datendateien sind definitiv der Weg für Dinge wie Vorlagen. – pcardune
Beachten Sie, dass Sie zip_safe = False nicht verwenden müssen. Verwenden Sie stattdessen pkg_resources.resource_stream ('Paketname', 'templates/file1.txt'). Read() und setuptools holen den Stream für Sie aus dem Dateisystem oder aus dem gezippten Ei. –