2012-09-05 78 views
3

我對如何導入工作有點困惑。假設:如何導入__init__.py中定義的變量?

package/ 
    __init__.py 
    file1.py 

__init__.py

from file1 import AClass 
__version__ = '1.0' 

file1.py

Class AClass(object): 
    def bar(): 
     # I want to use __version__here, but don't want to pass 
     # it through the constructor. Is there any way? 
     pass 

如果我在file1.py使用from . import __version__它只是說ImportError: cannot import name __version__

+0

可能是錯的,但是__表示私有,即不能在其他地方使用? –

回答

3

嘗試:

__version__ = '1.0' 
from file1 import AClass 

您需要在導入模塊之前,這樣它會分配常數當你嘗試導入它的時候。

編輯: larsmans建議避免循環依賴是一個好主意。

6

你有一個循環依賴,因爲這兩個文件都試圖互相import。移動__version__到一個單獨的模塊,說package/version.py,然後導入,在別人都用

from .version import __version__