2012-11-29 24 views
6

używam Pythona 2.7. Napisałem skrypt, muszę zaimportować funkcję z innego pliku, który znajduje się w innym folderze. mój skrypt znajduje się w ścieżceimportować plik z innego katalogu

C:\python\xyz\xls.py 

Path of File posiadające funkcję, że muszę zadzwonić jest

C:\python\abc.py 

próbowałem jak to

from python.abc import * 

ale to nie działa. Czy jest jakiś inny sposób wywołania tej funkcji lub muszę przenieść pliki do tego samego katalogu? Proszę o pomoc Dziękuję

Odpowiedz

11

można dynamicznie załadować moduł z pliku:

import imp 
modl = imp.load_source('modulename', '/path/to/module.py') 

Dzięki temu imp module docs poda więcej informacji.

+0

Dzięki Morfyn odpowiedź jest pomocna – user19911303

+0

To działało, ale czy istnieje sposób na wykorzystanie klas z modułu bez wywoływania modl.class_name? Po prostu class_name? – Alleo

+0

Cóż, możesz zrobić 'ClassName = modl.ClassName', a następnie użyć go bezpośrednio. –

4

Ty kot ustawić zmienną środowiskową PYTHONPATH:

c:\> set PYTHONPATH=c:\python 

A potem normalnie:

from abc import * 

Ewentualnie, jeśli nie chcą lub nie mogą zmienić środowisko, możesz zmienić ścieżkę w czasie wykonywania:

import sys 
sys.path.append(r'c:\Python') 
from abc import * 
+0

ya działa dobrze dzięki rodrigo. – user19911303

+0

jak mogę użyć, jeśli chcę wywołać 2 funkcje w 2 różnych plikach, które znajdują się w różnych miejscach? Próbowałem tak, jak to importować sys ... sys.path.append (r'c: \ Python ') .... from xyz.abc import * .... from qwe. fgh import * , ale nie działa. Proszę pomóc – user19911303

+1

@Raghavendra: To jest inne pytanie, więc prawdopodobnie powinieneś opublikować to jako takie. W każdym razie, teraz wygląda na to, że próbujesz zaimportować pakiety, a nie zwykłe moduły, więc prawdopodobnie będzie potrzebny plik __init__.py. BTW, mieszanie własnych modułów w katalogu Pythona prawdopodobnie nie jest dobrym pomysłem ...Powinieneś utworzyć nowy katalog dla swoich projektów. – rodrigo

2

dodaj C:\python w sys.path

również dodać plik __init__.py w C:\python tak że interpreter Pythona można importować pliki z tego folderu

należy przejść przez link

1

Zobacz także import_file. Kilka przykładów:

>>>from import_file import import_file

>>>mylib = import_file('c:\mylib.py')

>>>another = import_file('relative_subdir/another.py')

+0

Dzięki Tengis, ale pokazuje błąd dla wiersza "from import_file import import_file" – user19911303

0

dla Pythona 3.5 & powyżej zastosowania tego.

import importlib.util 
spec = importlib.util.spec_from_file_location("name", "path/to/file") 
foo = importlib.util.module_from_spec(spec) 
spec.loader.exec_module(foo) 
foo.MyClass() 
Powiązane problemy