Ich erstelle ein Modul GUI
(beschreibt eine grafische Schnittstelle), die ein anderes Modul benötigt somecalc
(einige Berechnungen). Die letztgenannten Einfuhren Standardbibliotheken: os
, sys
, time
usw.Andere Submodule importieren & Standard-Lib ignorieren
Das Ziel ist, ein Paket am Ende zu bauen.
Ich kann nicht die Konventionen finden andere Submodule in einem Paket in Bezug auf den Import und/oder andere selbst entwickelte Module:
ohne den Namensraum unübersichtlich (und die automatische Vervollständigung in IPython):
- ich will nicht
somecalc.os
,somecalc.sys
,somecalc.time
sehen
- ich will nicht
ohne Standardbibliotheken erneut zu importieren, die bereits in
somecalc
- importiert wurden, auch wenn ich die Ausgabe # 1 von writting
import os as _os
insomecalc.py
beheben, ich habe zwei Möglichkeiten, das gleiche zu tun. Wenn ich die folgenden Tests innerhalbGUI
: somecalc.os is os #TRUE
(mitimport os
insomecalc.py
)somecalc._os is os #TRUE
(keine automatische Vervollständigung von IPython mitimport os as _os
insomecalc.py
)
- importiert wurden, auch wenn ich die Ausgabe # 1 von writting
ohne lästige Anrufe zu Standard-Bibliothek, z.B. schreibe
somecalc.os.listdir
wenn ich einfachos.listdir
schreiben könnte. Außerdem glaube ich nicht, dass es klar ist, ob andere Entwickler mit mir an dem Projekt arbeiten werden.
Ich weiß, dass, wenn ich meine Ordner in ein Paket drehen möchte ich geraten bin eine __init__.py
Datei mit allen meinen Importe hinzuzufügen. Aber wenn ich Submodule entwickle/debugge (mit Code unter if __name__ = '__main__'
), wird die __init__.py
Datei im Stammverzeichnis ignoriert. Außerdem muss ich noch import somecalc
am Anfang meiner GUI.py
Datei schreiben.
Was sind die Konventionen?
Ihre Lösung mich nicht zulässt, dass die Standardbibliotheken von GUI zuzugreifen oder in einem umständlichen Art und Weise: jetzt wurde somecalc.os.listdir zu einem gewissen Grad. – Wli
Zugriff auf Standardbibliotheken mit einem 'Import-System'? Was ist das Problem ? – Cyrbil
Ich bin mir nicht sicher, deshalb frage ich die Konvention. Also auch wenn ein Modul "x" bereits in ein Submodul "sm" importiert wurde, muss ich immer noch "x" in alle Module importieren, die bereits "sm" importieren, oder? Dies ist, was ich seltsam finde, wie ich nie Standardbibliotheken unter Verzeichnis heruntergeladener Module gefunden habe. – Wli