2012-11-29 25 views
6

sto usando python 2.7. Ho scritto uno script, ho bisogno di importare una funzione da qualche altro file che si trova in una cartella diversa. mio script è nel percorsoimportare un file da una directory diversa

C:\python\xyz\xls.py 

percorso del file con funzione che ho bisogno di chiamare è

C:\python\abc.py 

ho provato come questo

from python.abc import * 

ma non sta funzionando. C'è un altro modo per chiamare la funzione o ho bisogno di spostare i file nella stessa directory? Aiutateci Grazie

risposta

11

È possibile caricare dinamicamente un modulo da un file:

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

Il imp module docs vi darà maggiori dettagli.

+0

Grazie morphyn, la risposta è utile – user19911303

+0

Questo ha funzionato, ma c'è un modo per utilizzare le classi dal modulo senza chiamare modl.class_name? Solo class_name? – Alleo

+0

Bene, puoi fare 'ClassName = modl.ClassName' e quindi usarlo direttamente. –

4

È gatto impostare la variabile d'ambiente PYTHONPATH:

c:\> set PYTHONPATH=c:\python 

E poi, di solito:

from abc import * 

In alternativa, se non si vuole o non può cambiare la ambiente, è possibile modificare il percorso in fase di esecuzione:

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

ya funziona bene grazie rodrigo. – user19911303

+0

come posso usare se voglio chiamare 2 funzioni in 2 file diversi che si trovano in posti diversi? Ho provato in questo modo .... import sys .... sys.path.append (r'c: \ Python ') .... da xyz.abc import * .... da qwe. fgh import * ma non funziona. Si prega di aiutare – user19911303

+1

@Raghavendra: Questa è una domanda diversa, quindi probabilmente dovresti postarla come tale. Ad ogni modo, ora sembra che tu stia cercando di importare pacchetti, non moduli semplici, quindi sarà necessario un file __init__.py, penso. BTW, mescolare i tuoi moduli nella directory python probabilmente non è una buona idea ...Dovresti creare una nuova directory per i tuoi progetti. – rodrigo

2

aggiungi C:\python in sys.path

aggiungere anche un file __init__.py in C:\python modo che interprete Python in grado di importare i file da questa cartella

si dovrebbe passare attraverso il link

1

Dai un'occhiata anche allo import_file. Alcuni esempi:

>>>from import_file import import_file

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

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

+0

Grazie Tengis, ma il suo errore di visualizzazione per la riga "da import_file import import_file" – user19911303

0

per Python 3.5 & sopra uso questo.

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() 
Problemi correlati