Ich schrieb diesen Code:Differenzieren lokale Importe aus System importiert
import os
import helpers
Und sofort wurde mir klar, dass später, wenn ich das lese, werde ich fragen, ob helpers
ein Systemmodul oder eine, die ich geschrieben habe, und in das Projektverzeichnis einfügen (ich kann mich nicht mehr daran erinnern! :)).
Jeder pythonische Weg, um es in diesem Code klar zu machen, dass os
ein Systemmodul ist und helpers
Teil meines Projekts ist? Ich könnte Kommentare zu diesem Effekt schreiben, aber das wäre nicht toll.
Wie andere Sprachen handhaben dies:
In C++ ist das Problem nicht existiert, weil das System von
<>
sind umgeben ist, während Projekt relativ von""
sind umgeben ist.Die C# -Lösung für das Problem besteht darin, dass auf Funktionen, die in einer beliebigen Datei im aktuellen Projekt definiert sind, ohne eine Importanweisung zugegriffen werden kann.
Edit: fand ich a related PEP, die für den Import von Projekt-lokale Module eine from . import someModule
Syntax führt. Ich werde das ausprobieren. Aber es ist nicht genug. Zum Importieren von Systemmodulen habe ich immer noch nur die generische Syntax import blah
.
Ich weiß nicht, ob es einen sprachspezifischen Mechanismus für was Sie wollen. Aber Sie können sicherlich einen Kontextmanager schreiben, der 'sys.path' manipuliert und nur von installierten Paketen oder projektspezifischen Paketen importiert. Obwohl dies der Lesbarkeit helfen könnte, wäre die Wartbarkeit eine PITA. – SuperSaiyan