Ich bin mitten in der Veröffentlichung eines Python-Pakets, und bin über jeden Aspekt der Verpackung verwirrt.Brauchen Sie die richtige Verzeichnisstruktur für Python-Pakete und Richtlinien für gute API-Design
zu starten, ist meine Verzeichnisstruktur wie folgt:
SamplePackage/
- setup.py
- README.rst
- LICENSE.rst
- sampledir/
-__init__.py
-sample.py
-utils.py
derzeit __init__
und setup
unpopulated sind. sample.py
ist die Datei, die jeder Benutzer des Pakets importieren möchte. Es enthält die API in Form von verschiedenen Funktionen: foo1
, foo2
.
utils.py
enthält Helfer Fictions für smaple.py
. Letztere enthält eine Aussage import utils
Noch unter dem sampledir
Verzeichnis platziert Skripte können leicht import sample
und die Fiktionen als sample.foo1()
verwenden. Tritt ich aus diesem Verzeichnis heraus, kann ich import sampledir
aufrufen, aber nicht import sample
, was erwartet wird. Also muss ich from sampledir import sample
tun. Dies führt zu einem Fehler auf der import utils
Linie in sample.py
ImportError: No module named 'utils'
Mancherorts ich import .utils
für Dateien im selben Verzeichnis gesehen habe. Aber wenn ich das versuche, führt dies zu einem Syntaxfehler.
Warum kann ich sample.py
nicht von außerhalb Samples importieren?
Auch welche Struktur Verzeichnis würde die Benutzer, die das Paket einfach installiert haben, um import sample
von sample.foo1()
gefolgt nennen, und müssen nicht from sampledir import sample
oder import sampeldir.sample
zu tun. Wenn Sie zum Beispiel die HTTP-Bibliothek requests
verwenden, müssen Sie sie einfach importieren und requests.get(url)
anrufen. requests.requests.get('url')
ist nicht erforderlich, wie es in urllib
ist. Was ist die korrekte Verzeichnisbenennung und -anordnung, um das zu erreichen, wenn ich möchte, dass das Paket sample
heißt?
Wenn Sie wollen, dass es wie 'requests' aussieht, [go and give' requests'] (https://github.com/kennethreitz/requests)! – jonrsharpe