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?
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
.
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.
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.
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.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
.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'
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.
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.
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