2017-06-09 54 views
0

我有一個從其它文件導入字典(我使用Python 2.7版)的Python:無法導入詞典從另一個文件

# src/config/config_bankheist.py 
bankheist_config = { 

    ############################### 
    # SECTION 1 : ENTERY OF HEIST # 
    ############################### 
    'activation_command': '!bankheist', 

    (...) # More key/values here 

} # End of bankheist_config 

問題,當我嘗試將其導入主文件,其中它被使用:

#src/lib/commands/bankheist.py 
import string 

from src.lib.timers import InfiniteTimer 
import src.lib.irc as irc_ 

from src.config.config import config 
from src.config.config_bankheist import bankheist_config as bankheist 

def check_init_status(): 
    try: 
     return bankheist['init_status'] 
    except KeyError: 
     bankheist['init_status'] = False 
     return False 

所以在這裏我嘗試通過鍵'init_status'返回值。第一次,它不會找到鑰匙,因爲銀行家還沒有啓動......所以我非常希望找到一個沒有找到的KeyError。相反,我得到一個TypeError:'function'對象沒有屬性'__ getitem __'。我嘗試了將init_status鍵添加到字典並初始化爲False,我甚至嘗試導入爲全局變量(假設它在配置文件中是全局的,並且在定義方法上是全局的),我試圖把bankhiest_config作爲bankhiest在同一個文件中,並且它仍然不起作用。

我有類似於config_command.py(與config_bankheist.py相同的文件夾)和commands.py(與bankheist.py相同的文件夾),那有效。所以我不知道我在這裏做錯了什麼。

由於提前, 勞倫斯

PS:如果有興趣,完整的代碼在GitHub上:https://github.com/LaurensScheldeman/TwitchBot/commits/master

+0

你確定你的'bankheist'模塊中沒有另一個名爲'bankheist'的對象(來自追蹤函數)? –

+0

'__init __。py'在src/config中丟失? – Chintan

+0

__init__.py在所有目錄中,而不是問題@Chintan和文件本身被稱爲bankheist.py ...可能是問題嗎?當我導入該文件:module = importlib.import_module('src.lib.commands。%s'%command) – Laurens

回答

1

你有函數對象命名爲bankheist,讓您的進口dict對象後bankheist函數定義改寫

嘗試保留初始值dict對象名稱bankheist_config

import string 

from src.lib.timers import InfiniteTimer 
import src.lib.irc as irc_ 

from src.config.config import config 
from src.config.config_bankheist import bankheist_config 

def check_init_status(): 
    try: 
     return bankheist_config['init_status'] 
    except KeyError: 
     bankheist_config['init_status'] = False 
     return False 
+0

謝謝,作爲銀行家導入_作爲一種魅力:) – Laurens

+0

@Laurens:作爲獎勵,歡迎您:爲不同的對象提供不同的名稱,因爲它使代碼更易於閱讀(特別是對於代碼作者而言,因爲它們是主要的讀者) –

相關問題