2011-12-13 52 views
0

我有一個叫Monkey的類,定義在root/ook/monkey.py。另一個腳本,我們把它稱爲do_things.py泡菜猴子對象的實例。該腳本do_things.py的樣子:醃漬類的Python路徑問題

import monkey 
[...] 
inst = monkey.Monkey() 
[...] 
data = cPickle.dumps(inst) 

現在,我有另一個腳本調用root/eek/fubar.py,看起來像這樣:

import ook/monkey 
[...] 
inst = cPickle.loads(data) 

哪裏data是醃製的是do_things.py在兩種情況下相同。現在,這個unpickling失敗,因爲沒有找到Monkey類。在這個腳本中,它被稱爲ook.Monkey.monkey而不是monkey.Monkey。

有什麼辦法解決這個問題嗎?

回答

1

將第二個文件中的導入從import ook.monkey更改爲from ook import monkey

1

在運行模塊的全局變量名稱「西遊記」必須引用相同的「猴子」類 -

所以,你的酸洗模塊中,做

import monkey 
Monkey = monkey.Monkey 

或者只是:

from monkey import Monkey 

(從你粘貼你已經做的其中之一,或行snippedts inst = Monkey()不會工作)

您unpikcling模塊上,做同樣的

import ook/monkey 
Monkey = ook.monkey.Monkey 

(模塊級)