2012-12-30 12 views

Odpowiedz

4

Wystarczy dodać pustą __init__.py plik do sygnalizowania baz jest modułem, a od foo.py zrobić:

from baz import bar 

O ile, oczywiście, masz dobry powód, aby baz do modułu (i korzystania execfile).

+0

Dziękuję, pracuję nad tym prawem teraz. – user1938464

1

Pytanie sugeruje, że chcesz uruchomić je jako skrypty, więc tak: możesz użyć execfile w 2.X lub subprocess (wywołać interpreter i przekazać skrypt jako argument). Musisz tylko podać bezwzględne ścieżki do plików.

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

Oczywiście jest to krucha robota. W przypadku baz jest zawsze subirectory foo można wyprowadzić go z Foo pliku:

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

jeśli oba pliki są w miejscach, które mogą być postrzegane przez pytona - czyli foldery są w sys.path lub zostały dodany do ścieżki wyszukiwania za pomocą site można importować baz z foo i wywoływać jego funkcje bezpośrednio. Jeśli musisz działać na podstawie informacji z baz, zamiast tylko uruchamiać akcję, jest to lepszy sposób. As long as there is an init.py in each folder Można po prostu zrobić

import baz 
baz.do_a_function_defined_in_baz() 
2

import sys, zmianę „sys.path” dołączając ścieżkę w czasie wykonywania, a następnie zaimportować moduł, który pomoże

Powiązane problemy