2012-11-29 114 views
6

我使用python 2.7。我寫了一個腳本,我需要從其他文件中導入一個函數,該文件位於不同的文件夾中。 我的腳本路徑從不同目錄導入文件

C:\python\xyz\xls.py 

具有的功能,我需要調用文件的路徑是

C:\python\abc.py 

我想這樣

from python.abc import * 

,但它無法正常工作。有沒有其他的方式來調用函數,或者我需要將文件移動到同一個目錄中?請幫助 謝謝

回答

11

導入文件可以動態地從文件加載一個模塊:

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

imp module docs會給你更多的細節。

+0

謝謝morphyn,答案是有幫助的 – user19911303

+0

這工作,但有沒有辦法使用模塊中的類,而無需調用modl.class_name?只是class_name? – Alleo

+0

那麼,你可以做'ClassName = modl.ClassName',然後直接使用它。 –

4

你的貓設置PYTHONPATH環境變量:

c:\> set PYTHONPATH=c:\python 

,然後正常:

from abc import * 

或者,如果你不想或不能改變的環境中,您可以在運行時更改路徑:

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

雅其工作很好謝謝羅德里戈。 – user19911303

+0

我如何使用如果我想在2個不同的地方在不同的文件中調用2個函數?我嘗試像這樣 .... import sys .... sys.path.append(r'c:\ Python') .... from xyz.abc import * .... from qwe。 fgh import * 但它不起作用。請幫助 – user19911303

+1

@Raghavendra:這是一個不同的問題,所以你可能應該這樣寫。無論如何,現在看起來你試圖導入包,而不是普通的模塊,所以我認爲需要__init__.py文件。順便說一句,混合你自己的模塊到Python目錄可能不是一個好主意......您應該爲您的項目創建一個新目錄。 – rodrigo

2

add C:\pythonsys.path

C:\python添加__init__.py文件,以便Python解釋器可以從該文件夾

你應該通過link

1

再看看import_file。 一些例子:

>>>from import_file import import_file

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

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

+0

感謝Tengis,但它顯示錯誤的行「from import_file import import_file」 – user19911303

0

對於上面使用本蟒3.5 &。

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