2011-11-17 66 views
0

我有一個項目,遇到問題。從其他地方導入包時,從包內的上級目錄導入模塊

kreveik. 
|-- classes 
| |-- baseclasses.py 
| |-- family.py 
| |-- __init__.py 
| `-- network.py 
|-- family 
| |-- __init__.py 
| `-- killer.py 
`-- genetic 
    `-- __init__.py 

這是項目的相關部分。追溯解釋了我在代碼中試圖做的事情。

/home/mali/workspace/kreveik/<ipython-input-7-ec5770ffbdf2> in <module>() 
----> 1 import kreveik 

/home/mali/workspace/kreveik/kreveik/__init__.py in <module>() 
----> 1 import classes 
     2 import numpy as num 
     3 import matplotlib.pyplot as plt 
     4 import network 
     5 import probes 

/home/mali/workspace/kreveik/kreveik/classes/__init__.py in <module>() 
     9 import copy 
    10 from baseclasses import ProbeableObj,Ensemble,Element 
---> 11 from network import TopologicalNetwork,Motif,Network 
    12 from family import Family 
    13 

/home/mali/workspace/kreveik/kreveik/classes/network.py in <module>() 
     3 """ 
     4 
----> 5 import classes 
     6 import numpy as num 
     7 import matplotlib.pyplot as plt 

ImportError: No module named classes 

我在目錄中打開一個交互式的Python會話/kreveik然後我嘗試導入kreveik包,裏面有在/kreveik/kreveik/__init__.py有其init文件,它開始導入需要在包中的其他工具,並在包classes,我導入我使用最多的類,夢想我可以通過它們在層次結構中相對於文件夾/kreveik/kreveik/的位置到達它們,但在文件/kreveik/kreveik/classes/network.py內,對包classes的調用失敗,就像它不在項目目錄的最高層。層次結構。我計劃將所有的課程都稱爲classes.baseclasses.SomeClass(),這與我在項目中所稱的位置無關。我在哪裏做錯了?請致電 PS。我知道有類似的條目解決這個問題,但我沒有找到可以幫助我的那個。

回答

1

從子包導入時,還必須引用封裝包。

在這個例子中,在network.py,使用

from kreivik.classes import * 
+0

這個工作,但PyDev的(Eclipse中)認爲這是非法的。 –

+0

我不使用PyDev,所以我看不到問題。如果指定'import kreivik.classes',會發生什麼情況? –