web-dev-qa-db-fra.com

Erreur d'importation Django: aucun module nommé applications

Je viens de regarder un projet avec git. La structure du projet est 

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

Il existe d'autres répertoires et fichiers, mais je pense que ce sont les plus importants. 

Quand je lance le serveur je reçois

    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

Lors de l'exécution de manage.py check, je reçois ImportError: No module named apps., donc je suppose que le problème n'a rien à voir avec mon module de configuration, mais avec mon répertoire d'applications. Je ne sais pas pourquoi il ne peut pas trouver les applications de mon module, car le projet se trouve sur mon sys.path et le répertoire apps existe évidemment. Comme je n'ai pas beaucoup d'expérience en tant que développeur Python, je ne trouve pas de solution moi-même. 

12
Josh

Vous devez ajouter un fichier __init__.py vide (4 caractères de soulignement au total) dans le dossier apps pour que Python le reconnaisse comme un package.

Consultez la documentation pour plus d'informations.

17
aumo

Notez que dans Django 1.9, il existe un module appelé Django.apps

Il est généralement conseillé d'éviter les conflits de noms avec les modules intégrés.

10
user5909835

Si vous avez utilisé la commande Django-admin startapp myapp, il crée ce fichier: myapp/apps.py.

Cela pourrait être en conflit avec votre dossier de modules apps/. Un fichier apps.pyc caché pourrait se trouver dans votre dossier myapp/.

Essayez de supprimer ceux-ci:

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

Notez que dans Django 1.9, vous pouvez ajouter votre application dans la liste INSTALLED_APPS.

Si le nom de votre application est app et que vous y avez créé des modèles, accédez au fichier settings.py et ajoutez votre application:

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

Cela peut également se produire si vous avez installé votre application dans settings.py dans votre dossier de projet principal, avant d'exécuter ceci:

python manage.py startapp [app-name]

Commentez-le, créez l'application (devrait fonctionner maintenant), puis replacez la ligne dans le fichier settings.py et continuez.

1
lookininward

Si vous utilisez cette commande pour démarrer une application:

Django-admin startapp appexample

... alors, la classe AppexampleConfig ne doit pas figurer dans le fichier settings.py

Ajoutez simplement le nom de l'application (par exemple appexample) dans la liste INSTALLED_APPS. Évitez d'utiliser: appexample.app.AppexampleConfig.

Généralement, la classe AppexampleConfig est une sous-classe de la classe Django.apps.Appconfig qui représente une application Django et sa configuration. Il définit simplement l'attribut name class et définit sa valeur sur Appexample.

0
Jai Narayan Singh

J'ai dépassé ce problème après avoir exécuté python3 manage.py runserver au lieu de python manage.py runserver Nous avons perdu 25 minutes sur celui-là ...

0
Taylor A. Leach

Tout d’abord, vérifiez votre manage.py et assurez-vous qu’il contient la référence correcte à myapp.

... apps/myapp/manage.py

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

Si les paramètres sont corrects, consultez l'interpréteur Python. Si vous utilisez virtualenv, des erreurs peuvent survenir lorsque vous utilisez le Python global au lieu de l'environnement virtuel. L'utilisation de Python global peut être provoquée par une configuration incorrecte de votre IDE, une erreur de l'utilisateur ou un bin/bash incorrect dans manage.py

Pour vous assurer que manage.py est en cours d’exécution sur l’environnement virtuel, vérifiez la première ligne dans manage.py. Par défaut, le fichier se lit comme suit: 

#!/usr/bin python

Changer cela en:

#!/path/to/virtualenv/bin python

Maintenant, vérifiez le terminal et la version Python qu’il utilise. Ensuite, activez virtualenv:

[user@pc] #: source /path/to/virtualenv/bin/activate 
(venv) [user@pc] #: pip list

Confirmez que Django est installé. Si c'est le cas et que cela ne fonctionne toujours pas correctement, mettez-le à niveau avec pip:

(venv) [user@pc] #: pip install --upgrade Django

Si aucune des solutions ci-dessus ne fonctionne, même si la version Python est correcte, vous utilisez le bon environnement Python et que manage.py est configuré correctement, cela signifie que l'erreur se situe ailleurs. 

0
Diaz

Commande: python manage.py startapp app_name

Le nom de la classe doit être identique à app_name dans le fichier models.py, puis ajoutez votre app_name dans la liste INSTALLED_APPS dans settings.py.

0
Fahri Güreşçi