2015-06-11 27 views
3

我有一個名爲Script的文件夾,裏面有temp.py腳本。我的臨時腳本從名爲lib的子文件夾導入模塊。從特定文件夾導入模塊

Lib文件夾裏面有空的__init__.py和我的parent_computer_test.py腳本。

在我temp.py腳本是下面的代碼:

import lib.parent_computer_test as parent_computer_test 
parent_computer_test.mainChunk() 
parent_computer_test.splitChunks() 

我設法從導入子文件夾的模塊沒有任何更大的問題。

此工作流程/腳本正常工作,但是由於特定的原因,我的lib文件夾必須位於我的計算機上的其他位置。有一個長長的故事,但它必須是這樣。

長話短說。我希望/Script文件夾中的temp.py文件夾從lib(或任何其他名稱)與parent_computer_test.py導入模塊,但同時此文件夾不是/Script的子文件夾 - 因此它位於計算機中的其他位置。它可以是C:/development/...什麼的。

所以我的問題是如何從一個特定的文件夾導入模塊?

+0

1 >>>>>>>> import os,sys 2 >>>>>>>> lib_path = os.path.abspath(os.path.join('..','..', '..','lib')) 3 >>>>>>>> sys.path.append(lib_path) 4 >>>>>>> import mymodule – Virbhadrasinh

+0

Duplicate問題:http://stackoverflow.com/questions/279237/import-a-module-from-a-relative-path – Virbhadrasinh

+0

請參閱[這個問題](http://stackoverflow.com/questions/3701646/how-to-add-to-the-pythonpath-in -windows-7) – luator

回答

5

將lib文件夾的路徑附加到SYS PATH環境變量。然後它可以從任何地方導入

import os, sys 
lib_path = os.path.abspath(os.path.join('..', '..', '..', 'lib')) 
sys.path.append(lib_path) 
import mymodule 
5
import imp 
yourModule = imp.load_source('yourModuleName', '/path/to/yourModule.py') 
foo = yourModule.YourFunction("You", "get", "the", "idea.") 

我意識到這是一個特例,但總的來說,我會避免這樣的東西。當你使用絕對路徑時,事情會變得很難看,特別是當你移動東西時,我只會用它來用於一次性腳本或者在不會有太大變化的系統上。

編輯:Aswin的答案是一個更好的長期解決方案。

+0

謝謝!它像一個魅力。我知道,這不是最好的做法,但如前所述...在這種情況下,這是唯一的情況。 – Excalibur

+0

很高興幫助。只要確保你意識到了風險。 –

+0

謝謝你指出。我是一個完整的初學者,因此,歡迎提供其他信息。 – Excalibur

0

您必須使用sys.path.append(「path」)。但只用一次。然後嘗試導入「my_module」 。 IT應該沒問題。 如果你想刪除附加的路徑,你可以使用, sys.path.remove(「path」)。