2017-06-09 5 views
0

Ich habe Probleme ein Wörterbuch aus einer anderen Datei importieren (ich verwende Python 2,7)Python: nicht Wörterbuch aus einer anderen Datei importiert

# src/config/config_bankheist.py 
bankheist_config = { 

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

    (...) # More key/values here 

} # End of bankheist_config 

Und wenn ich versuche, es in der Haupt-Datei zu importieren, wo es wird benutzt:

#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 

Also hier versuche ich, den Wert durch den Schlüssel 'init_status' zurückzugeben. Das erste Mal wird es den Schlüssel nicht finden, da Bankhost noch nicht initiiert ist ... Also normalerweise würde ich einen KeyError nicht gefunden finden. Stattdessen erhalte ich eine TypeError: 'Funktion' Objekt hat kein Attribut '__ getitem __'.

Ich habe versucht, den init_status Schlüssel zum Wörterbuch hinzufügen und initialisieren es auf False, ich habe sogar versucht, zu importieren ist als eine globale Variable (sagen, dass es global in der Konfigurationsdatei ist, und global auf der Methode definieren), versuchte ich setze die bankhiest_config als bankhiest in die selbe Datei, und es funktioniert immer noch nicht ..

Ich habe etwas ähnliches mit config_command.py (gleicher Ordner wie config_bankheist.py) und commands.py (gleicher Ordner wie bankheist.py) und das funktioniert .. Also ich bin mir nicht sicher, was ich hier falsch mache.

Vielen Dank im Voraus, Laurens

PS: wenn Interesse besteht, ist voll Code auf Github: https://github.com/LaurensScheldeman/TwitchBot/commits/master

+0

Sind Sie sicher, dass Sie kein anderes Objekt (von traceback a function) namens 'bankheist' in Ihrem' Bankheist' Modul haben? –

+0

'__init __. Py' fehlt in src/config? – Chintan

+0

__init__.py in allen Verzeichnissen, nicht das Problem @Chintan und die Datei selbst heißt bankheist.py ... könnte das das Problem sein? Wie ich diese Datei importiere: module = importlib.import_module ('src.lib.commands.% S'% Befehl) – Laurens

Antwort

1

Sie haben Funktion Objekt bankheist benannt, so importierten dict Objekt nach bankheist Funktionsdefinition überschrieben

versuchen, initial dict zu verlassen Objektname 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

Danke, importiert als Bankheist_ arbeitete als Charme :) – Laurens

+0

@Laurens: Sie sind willkommen, als ein Bonus : verschiedenen Objekten unterschiedliche Namen geben, weil sie den Code leichter lesbar machen (besonders für Autoren von Code, da sie Hauptleser sind) –

Verwandte Themen