Wie funktionieren Importe in IPython?

8

Ich bin etwas verwirrt darüber, wie Importanweisungen in IPython funktionieren. Ich habe nichts durch Websuchen gefunden.

Implizite relative Importe funktionieren mit Python 2, aber ich weiß nicht, ob das bei IPython für Python 3 immer noch der Fall ist.

Relative Importe mit der Punktsyntax scheinen überhaupt nicht zu funktionieren:

%Vor%

Importieren von Modulen, die die Punktsyntax verwenden, scheint unmöglich:

%Vor%

Gibt es irgendwo eine kurze Dokumentation?

    
orodbhen 13.08.2014, 09:57
quelle

1 Antwort

7

Das Problem ist, dass ich das Modul von einer niedrigeren Position in der Pakethierarchie importiert habe als in der Importanweisung des Moduls. Also, wenn ich in das Verzeichnis utils cd und

ausführen %Vor%

Dann wird Capture zur obersten Ebene der Hierarchie. Also die Import-Anweisung im Capture-Modul

%Vor%

geht über die oberste Ebene hinaus. Python weiß nicht, worauf sich ".." bezieht, weil Module sich nicht bewusst sind, zu welchem ​​Paket sie gehören. Wenn ich wieder in das Mypkg-Verzeichnis wechseln, bekomme ich das gleiche Problem

%Vor%

In diesem Fall ist utils die oberste Ebene, also

%Vor%

funktioniert, aber

%Vor%

funktioniert nicht.

Ich muss ein weiteres Verzeichnis nach oben verschieben:

%Vor%

IPython kann Pakete und Module importieren, die sich im aktuellen Arbeitsverzeichnis oder aus Verzeichnissen im Importpfad befinden. Ich kann das Paket dem Importpfad hinzufügen, um aus jedem Arbeitsverzeichnis importieren zu können.

%Vor%

Sie können sys.path.append verwenden, um Ihr Modul "selbstbewusst" zu machen, aber, wie von alpha_989 gezeigt, kann es möglicherweise zu Namenskollisionen führen. Es ist jedoch eine nützliche Problemumgehung, wenn Sie in einer interaktiven Terminalsitzung innerhalb der Pakethierarchie arbeiten.

    
orodbhen 14.08.2014, 22:59
quelle

Tags und Links