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.
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.
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.
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
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'
]
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.
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
.
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à ...
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.
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
.