wake-up-neo.net

Django-Importfehler: Keine Module mit dem Namen apps

Ich habe mir gerade ein Projekt mit git angesehen. Die Projektstruktur ist 

project
  apps
    myapp
      settings
        __init__.py
      __init__.py
    manage.py

Es gibt andere Verzeichnisse und Dateien, aber ich denke, das sind die wichtigen. 

Wenn ich den Server betreibe, bekomme ich

    Traceback (most recent call last):
  File "C:/Dev/project/apps/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\Django\core\management\__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\Django\core\management\__init__.py", line 345, in execute
    settings.INSTALLED_APPS
  File "C:\Python27\lib\site-packages\Django\conf\__init__.py", line 46, in __getattr__
    self._setup(name)
  File "C:\Python27\lib\site-packages\Django\conf\__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "C:\Python27\lib\site-packages\Django\conf\__init__.py", line 98, in __init__
    % (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'apps.myapp.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named apps.myapp.settings

Wenn manage.py check ausgeführt wird, bekomme ich ImportError: No module named apps.. Ich denke, das Problem hat nichts mit meinem Einstellungsmodul zu tun, sondern mit meinem apps Verzeichnis. Ich bin mir nicht sicher, warum es meine Modul-Apps nicht finden kann, weil sich das Projekt auf meinem sys.path befindet und das Verzeichnis apps offensichtlich vorhanden ist. Da ich als Python-Entwickler nicht sehr erfahren bin, finde ich selbst keine Lösung. 

12
Josh

Sie müssen eine leere __init__.py-Datei (insgesamt 4 Unterstriche) im Ordner apps hinzufügen, damit sie von Python als Paket erkannt wird.

Weitere Informationen finden Sie in der Dokumentation documentation .

17
aumo

Beachten Sie, dass es in Django 1.9 ein Modul namens Django.apps gibt

Es wird generell empfohlen, Namenskonflikte mit eingebauten Modulen zu vermeiden

10
user5909835

Wenn Sie den Befehl Django-admin startapp myapp verwendet haben, wird folgende Datei erstellt: myapp/apps.py.

Es könnte ein Konflikt mit Ihrem apps/-Modulordner auftreten. Eine versteckte apps.pyc-Datei könnte sich in Ihrem myapp/-Ordner befinden.

Versuchen Sie, diese zu entfernen:

  • project/apps/myapp/apps.py
  • project/apps/myapp/apps.pyc
9
Ruben

Beachten Sie, dass Sie Ihre App in Django 1.9 zur Liste INSTALLED_APPS hinzufügen können.

Wenn Ihr App-Name app ist und Sie darin Modelle erstellt haben, wechseln Sie zur Datei settings.py und fügen Sie Ihre App hinzu:

INSTALLED_APPS = [
    ...
    'app'
]
2
mwanjajoel

Dies kann auch passieren, wenn Sie Ihre App in settings.py in Ihrem Hauptprojektordner installiert haben, bevor Sie Folgendes ausführen:

python manage.py startapp [app-name]

Kommentieren Sie es aus, erstellen Sie die App (sollte jetzt funktionieren), fügen Sie die Zeile dann wieder in die Datei settings.py ein und fahren Sie fort.

1
lookininward

Wenn Sie diesen Befehl verwenden, um eine App zu starten:

Django-admin startapp appexample

... sollte die AppexampleConfig-Klasse nicht in der settings.py-Datei aufgeführt sein. 

Fügen Sie einfach den App-Namen (z. B. appexample) in INSTALLED_APPS-Liste hinzu. Vermeiden Sie die Verwendung von: appexample.app.AppexampleConfig.

Normalerweise ist die AppexampleConfig-Klasse eine Unterklasse der Django.apps.Appconfig-Klasse, die eine Django-Anwendung und ihre Konfiguration darstellt. Es definiert lediglich das Attribut name class und setzt seinen Wert auf Appexample.

0

Dieses Problem wurde behoben, nachdem python3 manage.py runserver anstelle von python manage.py runserver.__ ausgeführt wurde. Verbrannte eine solide 25 Minuten ...

0
Taylor A. Leach

Überprüfen Sie zunächst Ihren manage.py und stellen Sie sicher, dass er die richtige Referenz auf myapp hat.

... apps/myapp/manage.py

...
if __== "__main__":
    os.environ.setdefault("Django_SETTINGS_MODULE", "myapp.settings")
...

Wenn die Einstellungen korrekt sind, überprüfen Sie den Python-Interpreter. Wenn Sie virtualenv verwenden, können Fehler auftreten, wenn Sie das globale Python anstelle der virtuellen Umgebung verwenden. Die Verwendung von globalem Python kann durch falsches Einrichten der IDE, Benutzerfehler oder falsches bin/bash in manage.py verursacht werden. 

Um sicherzustellen, dass manage.py in der virtuellen Umgebung ausgeführt wird, überprüfen Sie die erste Zeile in manage.py. Standardmäßig liest die Datei: 

#!/usr/bin python

Ändern Sie das zu:

#!/path/to/virtualenv/bin python

Überprüfen Sie nun das Terminal und die verwendete Python-Version. Dann aktivieren Sie die virtuelle:

[[email protected]] #: source /path/to/virtualenv/bin/activate 
(venv) [[email protected]] #: pip list

Bestätigen Sie, dass Django installiert ist. Wenn dies der Fall ist und immer noch nicht ordnungsgemäß funktioniert, aktualisieren Sie es mit pip:

(venv) [[email protected]] #: pip install --upgrade Django

Wenn keine der oben genannten Funktionen funktioniert, obwohl die Python-Version korrekt ist, Sie die richtige Python-Umgebung verwenden und manage.py korrekt eingerichtet ist, bedeutet dies, dass der Fehler an einer anderen Stelle liegt. 

0
Diaz

Befehl: python manage.py startapp app_name

Der Klassenname muss derselbe sein wie app_name in der models.py-Datei, und fügen Sie dann Ihren app_name in die Liste INSTALLED_APPS in settings.py ein.

0