web-dev-qa-db-fra.com

Django - ImportError: aucun module nommé applications

J'essaie le didacticiel Django sur le site Web djangoproject.com, mais lorsque j'atteins la partie où je fais les premiers "sondages makemigrations", j'obtiens toujours l'erreur suivante:

ImportError: Pas de module nommé applications

 Traceback (appel le plus récent en dernier): 
 Fichier "manage.py", ligne 22, dans 
 Execute_from_command_line (sys.argv) 
 Fichier "/ Bibliothèque/Python/2.7/site-packages/Django/core/management/__ init__.py ", ligne 338, dans execute_from_command_line 
 Utility.execute () 
 Fichier" /Library/Python/2.7/site- packages/Django/core/management/__ init__.py ", ligne 312, dans execute 
 Django.setup () 
 Fichier" /Library/Python/2.7/site-packages/Django/__init__. py ", ligne 18, dans la configuration 
 apps.populate (settings.INSTALLED_APPS) 
 Fichier" /Bibliothèque/Python/2.7/site-packages/Django/apps/registry.py ", ligne 85 , dans peupler 
 app_config = AppConfig.create (entrée) 
 Fichier "/Library/Python/2.7/site-packages/Django/apps/config.py", ligne 112, dans create 
 mod = import_module (mod_path) 
 Fichier "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", ligne 37, dans import_module 
 __import __ (nom) [.__ __.]

Comment puis-je résoudre cette erreur?

4
Monil

Votre problème est que votre version de Django ne correspond pas à la version du tutoriel.

Dans Django 1.9+, la commande startapp crée automatiquement une classe de configuration d'application, de sorte que le tutoriel vous demande d'ajouter polls.apps.PollsConfig à INSTALLED_APPS.

Pour Django 1.8 et les versions antérieures, le tutoriel vous demande d’ajouter polls à INSTALLED_APPS. Si vous ajoutez plutôt polls.apps.PollsConfig, vous obtiendrez une erreur d'importation, sauf si vous créez manuellement la PollsConfig.

6
Alasdair

J'avais vraiment un problème similaire, mais celui-ci était bien différent de l'OP. Cela dit, ce message a été l’une des premières réponses trouvées lors du débogage de mon problème. Je le détourne donc avec une réponse à ma question.

Problème

L'application que je construisais avait des applications imbriquées sous un espace de noms parent, par exemple. customapp.polls au lieu de juste polls. L'erreur que j'ai vue était

ModuleNotFoundError: No module named 'polls'

mais cela ressemble probablement à ce qui suit si vous utilisez Python 3.5 ou une version antérieure:

ImportError: No module named polls

Notez que ceci indique polls au lieu de apps dans le message d'origine.

Réponses de ce post

  • @ Alasdair's answer est un bon à essayer. Si je force un problème similaire, j'obtiens une erreur indiquant que customapp.polls.apps.PollsConfig et customapp.polls.apps sont manquants au lieu de apps, mais il pourrait simplement s'agir de différences dans les versions.
  • @ Monil's answer "a résolu" mon problème, même si j'avais défini une sous-classe PollsConfig. Comme @Alasdair le suggère, la raison pour laquelle cela fonctionne est souvent parce que vous n'avez pas ajouté de sous-classe AppConfig.

Solution

Dans mon cas, l’erreur se plaignait du manque du module polls (pas apps). Et comme @Monils answer a "résolu" mon problème, j'ai pu le réduire à ma configuration actuelle. Ma configuration semblait équivalente à:

class PollsConfig(AppConfig):
    name = 'polls'

_ {but _ puisque j'ai placé mes applications sous un module parent, j'aurais dû écrire:

class PollsConfig(AppConfig):
    name = 'customapp.polls'
4
Tony S Yu

Il y a une erreur dans le tutoriel.

Il demande d'ajouter polls.apps.PollsConfig dans la section INSTALLED_APPS du fichier settings.py. Je l'ai changé de polls.apps.PollsConfig à simplement polls et cela a fait l'affaire. J'ai réussi à effectuer des migrations.

J'espère que cela aidera d'autres personnes confrontées à des problèmes similaires.

4
Monil

Vous devez installer les packages requis dans votre virtualenv pour exécuter le projet Django. Tout d’abord, créez virtualenv pour votre projet.

virtualenv env    #For python 2.7
virtualenv -p python3 env #For python 3.4

Actiavte env pour installer vos besoins.

source env/bin/activate

En utilisant pip, vous pouvez ensuite installer vos packages.

pip install Django

Et puis démarrez votre projet Django.

1
MicroPyramid

Dans Django 1.10.6, j'avais la même erreur ("pas de module nommé ..."). La solution qui a fonctionné pour moi est de changer "polls.apps.PollsConfig" pour "mysite.polls" dans settings.py. o.O

0
Paco Barter