2016-09-29 5 views
0

Ich habe diesen Code in meinem Python-Code (settings.py im PROJECT dir befindet):"von" Import funktioniert anders

import PROJECT.settings 
... 
if PROJECT.settings.BASE_DIR: 
    ... 

der gut arbeitet. Ich würde sagen, dass ich auf diese umschreiben könnte:

from PROJECT import settings 
... 
if settings.BASE_DIR: 
    ... 

Aber das gibt einen AttributeError: 'NoneType' object has no attribute 'BASE_DIR'

Bin ich hier etwas fehlt?

+0

Beachten Sie, dass, wenn dies Django ist (wie es scheint), Sie Einstellungen immer über 'von django.conf Importeinstellungen' importieren sollten, nicht direkt von Ihrem Projekt. –

+0

@DanielRoseman danke. Ich versuche jetzt, meine Seite zu veröffentlichen, bin aber unter Zeitdruck. Ich werde den Code aktualisieren, um später korrekt zu sein. –

+0

Nun, abgesehen von allem anderen, behebt dies Ihr Problem, also sollten Sie es wahrscheinlich jetzt tun. –

Antwort

3

Das from parent import name Format sucht zuerst nach Namen in dem module Namespace (set in __init__.py oder irgendetwas, das diesem Namen zum parent Modul hinzugefügt).

In Ihrem Fall hat die __init__.py Datei in PROJECTsettings zu None gesetzt. Dieser Name wird vor allen enthaltenen Modulen gefunden. Das Formular import parent.name sucht nur nach Modulen in einem Paket, nicht nach Namen, die im Modul parent definiert sind.

+0

Danke, obwohl '__init.py__' grundsätzlich leer ist, denke ich, dass etwas anderes passiert (ich benutze Django), das es auf 'None' setzt. Ich dachte immer, die beiden wären identisch, aber anscheinend nicht. –