Ich habe mehrere Quellen gefunden (https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distribute, http://blog.ionelmc.ro/2014/05/25/python-packaging/, http://blog.ionelmc.ro/2014/06/25/python-packaging-pitfalls/), die darauf hinweist, dass die Art und Weise Datendateien in einem Python-Paket zu verteilen ist Setuptool der include_package_data
Option und ein MANIFEST.in
zu verwenden. Die Dateien in meinem Paket aussehen so wie,Wo installiert setup.py Datendateien in einem virtualenv?
setup.py
setup( # ... include_package_data = True, # ...
mit dem Rest der Datei (hoffentlich irrelevant) elided.
MANIFEST.IN
graft testdata include ChangeLog include README.rst include COPYING include COPYING.LESSER include tox.ini
Wenn ich laufe setup.py install
oder Pip in einem virtualenv verwenden, habe ich am Ende mit dem Python-Source-Dateien selbst, aber ohne testdata/
überall kann ich es finden. Ich würde denken, dass dies ein Fehler in meiner Verpackung war, außer dass ich, wenn ich ein anderes Paket mit einem ähnlichen Layout ergreife, die Datendateien auch nicht finden kann. Wenn ich das Repository für das Beispielpaket https://github.com/ionelmc/python-nameless klone und es unter Verwendung von setup.py install
installiere, wird das Paket im Verzeichnis lib/python3.4/site-packages/nameless-0.1.0-py3.4.egg/nameless/
installiert. Allerdings kann ich keine der Dateien oder Tests irgendwo im virtualenv finden. Wo sollen sie enden? Wie soll das funktionieren?
Meine Motivation für diese Frage ist, dass ein anderer Mitwirkender für ein Projekt möchte, dass die Tests, die die Datendateien erfordern, von einer Pip-Installation ausgeführt werden. Ist das überhaupt der richtige Ansatz?
Verwenden 'pkg_resources' angeben benötigt, um Ihre Datendateien zu entdecken. Siehe meine [Antwort] (http://stackoverflow.com/a/34788912/3626079) für ähnliche Frage. – ziky