2010-08-07 37 views
2

我正在爲GAE開發Python應用程序。如何用python導入函數

該應用程序由一堆類和函數組成,這些類和函數目前都在同一個文件main.py中。

該應用程序運行沒有問題。

現在,我想重構應用程序並外包所有類。每個班級都應該在自己的檔案中。這些文件應安排在這樣的目錄中:

main.py 
/directory1/class1.py 
/directory1/class2.py 
/directory2/class1.py 

我的問題是,在這些外包類中,我不能使用main.py的函數。

我在類文件裏面試過了。

from main import name_of_function 

但是,編譯說

from main import name_of_function 
ImportError: cannot import name name_of_function 

我是怎麼了?

funktion的名稱是login。也許這會導致問題?

+1

http://docs.python.org/tutorial/modules.html#packages – 2010-08-07 09:38:18

+0

嗨,我知道這個文檔。但它並沒有幫助我解決問題。我在Pydev上使用了Eclipse,它不會顯示錯誤。 – Neverland 2010-08-07 10:07:30

回答

0

有時候,如果它們屬於一起,離開同一個模塊中的類不是沒有目的地分離是很好的。

從主函數使用函數的問題是您應該重構一個模塊的問題,說common_utils.py出這些函數,並將其與main分開。您可以將其導入到使用這些模塊的模塊中。不要以爲課程只考慮整個用例。

如果你可以給你的程序邏輯的僞代碼,我們可以一起檢查重構。

+0

僞代碼不是那麼容易,因爲它超過了8000 LOC。 (工作)代碼在這裏:http://code.google.com/p/koalacloud/source/browse/這是在我嘗試重構和外包類之前。 – Neverland 2010-08-07 13:28:00

2

嘗試將附加函數從main.py移動到單獨的文件中。

main.py 
library.py # contains login() and other functions from main 
/directory1/class1.py 
/directory1/class2.py 
/directory2/class1.py 
+0

我試圖將main.py的一些函數外包給library.py。 我也從main.py複製到library.py從... import ...我需要這些函數的語句。裏面main.py我插入 從庫導入login1 從庫導入Login2身份 從庫導入login3 ... 但現在我有,我得到ImportErrors從以前從來沒有問題,包裝問題。這是因爲我在main.py和library.py中有相同的import ...語句嗎? – Neverland 2010-08-07 12:22:33