PEP-8: Modul am Anfang der Datei

8

Um meinen Python-Stil zu verbessern, habe ich einen PEP-8-Style-Checker auf einem meiner Skripts ausgeführt und dabei etwas beschwert, von dem ich nicht weiß, wie ich es beheben soll. Der Prolog des Skripts ist etwas wie:

%Vor%

und der Style-Checker beschweren sich über die import mymodule -Zeile und geben an, dass es ein Top-File sein sollte. Aber ich kann es offensichtlich nicht verschieben, bevor ich den Weg dorthin einstelle, wo es gefunden wird. Gibt es einen guten Weg, dies zu erreichen (die Eingabe einer Umgebungsvariablen oder eines Shell-Wrappers ist nicht das, was ich besser finde als mein aktueller Code), während gleichzeitig die PEP-8-Empfehlungen eingehalten werden?

    
AProgrammer 03.04.2017, 15:41
quelle

3 Antworten

1

Wenn Sie Pfadmanipulationen vermeiden möchten, können Sie dies möglicherweise mithilfe des weniger bekannten Features .pth tun.

sys.path sollte mit dem Verzeichnis beginnen, das das Hauptprogramm enthält, entweder nach Name oder durch Verweis als ''. Ich nehme an, dass die Datei, die mymodule importiert, nicht Teil von mypackage ist, so dass der '' Eintrag nicht zum Importieren von mymodule geeignet ist.

sys.path sollte mit dem Verzeichnis site-packages für die ausführende Binärdatei enden. Das ist der normale Ort für hinzugefügte Pakete. Wenn Sie mypackage nicht in site-packages verschieben möchten, können Sie letztere 'virtuell' erweitern, indem Sie eine Datei mystuff.pth darin einfügen. Es sollte eine Zeile enthalten: den Pfad zum Verzeichnis mit mypackage . Nennen Sie es myprojects . Dann können mypackage und jedes andere Paket in myprojects importiert werden, als wären sie in site-packages .

Ein Vorteil von .pth-Dateien ist, dass Sie identische Kopien in mehrere Site-Packages-Verzeichnisse einfügen können. Zum Beispiel habe ich mehrere Projekte in F:/python . Ich habe mehrere Versionen von Python installiert. Also habe ich python.pth mit dieser Zeile in die Site-Pakete für jeden eingefügt.

    
Terry Jan Reedy 08.04.2017 18:02
quelle
0

Die beste Strategie wäre, den Code sys.path in eine separate Datei zu legen und sie in die Arbeitscodedatei zu importieren.

Also, ich werde den Code in zwei Dateien aufteilen. Ein Name my_module.py und ein anderer Name working_module.py

Jetzt enthält my_module unter Zeilen

%Vor%

und working_module enthalten

%Vor%

weil wir my_module vor mypackage importieren, wird vorher der Pfad-bezogene Code ausgeführt und Ihr Paket ist im Pfad verfügbar.

    
Rahul 03.04.2017 15:52
quelle
-1

Sie können importlib module (python 3.5) oder imp für python 2.7 verwenden, um mypackage.mymodule programmatisch zu laden. Beide haben den gleichen Zweck:

  

Mechanismen zur Implementierung der Import-Anweisung

Diese Frage könnte Ihnen mehr helfen: Wie wird ein Modul mit dem vollständigen Pfad importiert?

Ссылка

Ссылка

    
Meow Meow Meow 03.04.2017 17:08
quelle

Tags und Links