2012-12-30 15 views

Antwort

4

Fügen Sie einfach eine leere __init__.py Datei baz zu signalisieren, ist ein Modul, und von foo.py tun:

from baz import bar 

Es sei denn natürlich, Sie haben einen guten Grund, nicht baz in ein Modul zu machen (und execfile verwenden).

+0

Danke helfen, arbeite ich an diesem Recht jetzt. – user1938464

1

Frage impliziert, dass Sie diese als Skripte ausführen möchten, also ja: Sie könnten execfile in 2.X oder subprocess verwenden (rufen Sie den Interpreter auf und übergeben Sie das Skript als Argument). Sie müssen nur absolute Pfade zu den Dateien angeben.

# Python 2.X only! 
execfile ('c:/python/scripts/foo/baz/baz.py') 

Doing es buchstäblich ist spröde, natürlich. Wenn baz immer ein subirectory von foo ist, könnte man es aus der foo ableiten Datei:

baz_dir = os.path.join(os.path.dirname(__file__), "baz") 
baz_file = os.path.join(baz_dir, "baz.py") 
execfile(baz_file) 

Wenn beide Dateien in Positionen sind, die von Ihrem Python zu sehen ist - das heißt, die Ordner in sys.path sind oder waren hinzugefügt zum Suchpfad mit site können Sie Baz von Foo importieren und rufen Sie es Funktionen direkt auf. Wenn Sie tatsächlich auf Informationen von Baz reagieren müssen, anstatt nur eine Aktion auszulösen, ist dies ein besserer Weg. As long as there is an init.py in each folder könnten Sie tun nur

import baz 
baz.do_a_function_defined_in_baz() 
2

import sys, change „sys.path“ durch den Pfad während der Laufzeit angehängt wird, dann das Modul importieren, die

Verwandte Themen