2012-01-12 101 views
1

我想從另一個導入一個python腳本。我在一個腳本中定義了一些常用函數,然後還有許多其他想要導入這些函數的腳本。沒有課程,只是功能。相對於當前腳本導入共享python腳本的最簡單方法

導入腳本需要從相對路徑導入,例如../../SharedScripts/python/common.py

然後我有一個函數def f1(...)定義我將調用。

我發現imp模塊似乎是正確的使用,但我無法弄清楚我的例子的確切語法。

有人可以建議使用正確的代碼或最簡單的方法,如果IMP不是正確的模塊?

從下面的答案我能得到這個工作液 ...

projectKey = 'THOR' 

# load the shared script relative to this script 
sys.path.append(os.path.dirname(__file__) + '/../../SharedScripts/python') 
import jira 

jira.CheckJiraCommitMessage(sys.argv[1], sys.argv[2], projectKey) 

在那裏我有一個空__init__.py並在SharedScripts/python目錄與普通函數定義一個jira.py

+0

有一個更好的方式來獲得絕對路徑:'os.path.abspath'(看我的文章) – gecco 2012-01-12 10:53:34

回答

1

爲什麼不將../../SharedScripts/python/添加到python路徑?然後你可以使用common.py像任何其他模塊:

import common 
common.f1() 

您可以通過系統變量PYTHONPATH或直接從蟒蛇操縱它交替Python路徑:sys.path.append("../../SharedScripts/python/")

請注意,它可能是明智的使用絕對路徑...(應用程序的當前目錄可能會改變)

要獲得絕對路徑可以調用使用函數os.path.abspathos.path.abspath('../../SharedScripts/python/')

+0

感謝這聽起來是合理的,但目前不工作,請參閱SAMAME的帖子下的評論。 – 2012-01-12 10:16:34

1

一種可能的方法是在導入之前將目錄添加到Python路徑。

#!/usr/bin/env python 
import sys 
sys.path.append('../../SharedScripts/python') 
import common 
+0

謝謝,我試過,但只是得到了未知的模塊錯誤。我在python目錄中有一個空的

__init__.py
。 common.py只是有一些def func1()定義。它可能是一個相對路徑問題,也許當前目錄不是腳本位置? – 2012-01-12 10:15:18

+0

致電'os.getcwd()'知道你當前的文件夾 – gecco 2012-01-12 10:17:11

+0

謝謝gecco,現在就開始工作 – 2012-01-12 10:27:37