Ich möchte mein eigenes Paket mit Python im oberen Verzeichnis importieren und verwenden, konnte jedoch keine Lösung finden, wenn ich nicht über den relativen Pfad importieren oder sys.path im Skript ändern möchte, also schreibe ich es auf.
Erstellen Sie abschließend setup.py
und verwenden Sie den Befehl pip install -e .
.
Beispiel für die Verzeichniskonfiguration:
project
+ mypackage
| + __init__.py
| + module_a.py
+ program_main
| + executor
| + executor.py
| + tests
| + executor_test.py
Ich möchte mein eigenes Paket namens "mypackage" aus Sicht von "executer.py" in den oberen Ordner importieren und verwenden.
In meinem Fall gab es in AWS mehrere Verzeichnisse für Lambda-Dienste, und LambdaLayer wurde als allgemeiner Prozess in einem übergeordneten Ordner abgelegt, sodass LambdaLayer lokal nicht korrekt aus Lambda-Funktionen importiert werden konnte.
Darüber hinaus verfügen Lambda-Dienste und Lambda Layer über eine Verzeichnisstruktur, die in der bereitgestellten Umgebung einwandfrei funktioniert, und Sie müssen beim Ausführen von Komponententests mit CICD auf den Pfad achten.
project
+ layers
| + my_layer_1
| + ...
| + ...
+ lambda
| + service_1
| + handler.py
| + serverless.yml
| + requirements.txt
| + env
| + ...
| + tests
| + ...
| + ...
+ setup.py
Sie können Pakete mit setup.py
verwalten. Legen Sie die folgende setup.py
im Stammverzeichnis ab.
from setuptools import setup, find_packages
setup(name='myproject', version='1.0', packages=find_packages())
find_packages () findet automatisch das Paket, in dem __init __. py
existiert. Wenn der Pfad nicht funktioniert oder nicht gefunden wird, können Sie zusätzlich zu "packages" mit "package_dir" spielen oder prüfen, ob "__init __. Py" vorhanden ist.
Installieren Sie anschließend Ihr eigenes Paket, indem Sie den folgenden Befehl im Stammverzeichnis ausführen.
pip install -e .
-e Referenz
e, --editable <path/url>
Install a project in editable mode (i.e. setuptools “develop mode”) from a local project path or a VCS url.
Wenn Sie -e angeben, werden beim Bearbeiten und Speichern Ihres eigenen Pakets die Änderungen automatisch erkannt, sodass Sie Ihr eigenes Paket nicht neu installieren müssen (pip install).
https://stackoverflow.com/questions/17155804/confused-about-the-package-dir-and-packages-settings-in-setup-py
Recommended Posts