我使用python 2.7。我寫了一個腳本,我需要從其他文件中導入一個函數,該文件位於不同的文件夾中。 我的腳本路徑從不同目錄導入文件
C:\python\xyz\xls.py
具有的功能,我需要調用文件的路徑是
C:\python\abc.py
我想這樣
from python.abc import *
,但它無法正常工作。有沒有其他的方式來調用函數,或者我需要將文件移動到同一個目錄中?請幫助 謝謝
我使用python 2.7。我寫了一個腳本,我需要從其他文件中導入一個函數,該文件位於不同的文件夾中。 我的腳本路徑從不同目錄導入文件
C:\python\xyz\xls.py
具有的功能,我需要調用文件的路徑是
C:\python\abc.py
我想這樣
from python.abc import *
,但它無法正常工作。有沒有其他的方式來調用函數,或者我需要將文件移動到同一個目錄中?請幫助 謝謝
導入文件可以動態地從文件加載一個模塊:
import imp
modl = imp.load_source('modulename', '/path/to/module.py')
imp module docs會給你更多的細節。
你的貓設置PYTHONPATH環境變量:
c:\> set PYTHONPATH=c:\python
,然後正常:
from abc import *
或者,如果你不想或不能改變的環境中,您可以在運行時更改路徑:
import sys
sys.path.append(r'c:\Python')
from abc import *
雅其工作很好謝謝羅德里戈。 – user19911303
我如何使用如果我想在2個不同的地方在不同的文件中調用2個函數?我嘗試像這樣 .... import sys .... sys.path.append(r'c:\ Python') .... from xyz.abc import * .... from qwe。 fgh import * 但它不起作用。請幫助 – user19911303
@Raghavendra:這是一個不同的問題,所以你可能應該這樣寫。無論如何,現在看起來你試圖導入包,而不是普通的模塊,所以我認爲需要__init__.py文件。順便說一句,混合你自己的模塊到Python目錄可能不是一個好主意......您應該爲您的項目創建一個新目錄。 – rodrigo
再看看import_file。 一些例子:
>>>from import_file import import_file
>>>mylib = import_file('c:\mylib.py')
>>>another = import_file('relative_subdir/another.py')
感謝Tengis,但它顯示錯誤的行「from import_file import import_file」 – user19911303
對於上面使用本蟒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()
謝謝morphyn,答案是有幫助的 – user19911303
這工作,但有沒有辦法使用模塊中的類,而無需調用modl.class_name?只是class_name? – Alleo
那麼,你可以做'ClassName = modl.ClassName',然後直接使用它。 –