Erreur d'importation django - Aucun module nommé core.management

191

Ok, je vois beaucoup de ces erreurs. J'ai essayé tout ce que je sais faire et je n'ai pas encore compris cela.

Je travaille sur un serveur de développement exécutant python 2.5 et Django 1.3. Django 1.3 a été installé à l'aide de l'installation de python setup.py après la décompression du téléchargement tar.gz.

Tout fonctionne bien, j'ai rarement besoin de courir manage.pymais j'essaie d'utiliser la nouvelle application staticfiles et je rencontre des problèmes.

python manage.py collectstatic
Traceback (most recent call last):
  File "manage.py", line 2, in <module>
    from django.core.management import execute_manager
ImportError: No module named core.management

Ok, donc j'ai un PATHproblème.

Depuis l' installation de Django, je vérifie mon site-packagesrépertoire.

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/usr/lib/python2.5/site-packages

Ok, voyons ce que j'ai, echo $ PYTHON_PATH était vide, donc je l'ai défini

export PYTHON_PATH=/usr/lib/python2.5/site-packages/django

Toujours pas de chance. Vérifions ce que sys.path a à dire

>>> import sys
>>> print sys.path
['', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/PIL', '/usr/lib/python2.5/site-packages/django', '/var/lib/python-support/python2.5']

le chemin est là, j'ai même créé /usr/lib/python2.5/site-packages/django.pth avec le contenu

cat /usr/lib/python2.5/site-packages/django.pth 
/usr/lib/python2.5/site-packages/django/

Quelqu'un a-t-il une idée de ce qui se passe ici?

J'ai trouvé un lien symbolique plus haut sur le chemin qui gênait, mais pas sur une nouvelle erreur.

python manage.py collectstatic
Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    execute_manager(settings)
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 349, in execute
    version=get_version(),
  File "/usr/lib/python2.5/site-packages/django/__init__.py", line 12, in get_version
    from django.utils.version import get_svn_revision
ImportError: No module named utils.version

J'ai également essayé de créer un nouveau projet pour voir s'il y avait des problèmes et obtenir la même erreur utils.version.

Nœud latéral: Unode de #django m'a un peu aidé, a configuré virtualenv sur la même machine et a surmonté les erreurs, donc toujours pas sûr de ce qui se passe avec cette installation réelle ici, mais cela ne semble pas être dans les projets django mais dans le django / python install.

Grantk
la source
1
Que se passe-t-il lorsque vous tapez import djangodans le shell python?
silent1mezzo
@ silent1mezzo - Ahh a oublié de jeter ça, rien à redire du shell python lors de l'importation django
grantk
1
Avez-vous couru python manage.py syncdb?
silent1mezzo
@silentmezzo - Pas sur cette machine, je l'ai fait sur ma machine personnelle avant de déplacer le projet.
grantk
Essayez d'abord de l'exécuter. Cela peut parfois provoquer l'erreur.
silent1mezzo

Réponses:

169

Si, comme moi, vous exécutez votre django dans un virtualenv et que vous obtenez cette erreur, regardez votre fichier manage.py. La première ligne doit définir l'exécutable python utilisé pour exécuter le script. Cela devrait être le chemin vers le python de votre virtualenv, mais c'est quelque chose qui ne va pas comme / usr / bin / python, qui n'est pas le même chemin et utilisera l'environnement python global (et les packages seront manquants). Changez simplement le chemin dans le chemin de l'exécutable python dans votre virtualenv.

Vous pouvez également remplacer votre ligne shebang par #!/usr/bin/env python. Cela devrait utiliser l'environnement et l'interpréteur python appropriés à condition que vous activiez d'abord votre virtualenv (je suppose que vous savez comment faire cela).

Steve K
la source
27
ou courir comme<path-to-my-env>/bin/python manage.py runserver
geekQ
Bien repéré! C'était exactement le problème!
kstratis
7
Aussi, euh ... n'oubliez pas d'activer le virtualenv. Oh!
Alex Mcp
Quoi qu'il en soit, vous pouvez fournir un exemple du chemin d'accès à votre exécutable python dans votre virtualenv. Par exemple, mon chemin vers mon environnement virtuel est / Users / Chris / virtualenv / my_first_venv et j'ai créé la première ligne #! / Users / Chris / virtualenv / my_first_venv /, mais j'obtiens toujours la même erreur. Je pense que je fais peut-être quelque chose de mal avec le shebang ...
Chris
Vous avez peut-être oublié d'ajouter l'exécutable python à la fin du chemin: #!/Users/Chris/virtualenv/my_first_venv/bin/pythonou quelque chose le long de ça?
Steve K
40

Si vous êtes dans un virtualenv, vous devez l'activer avant de pouvoir exécuter ./manage.py 'command'

source path/to/your/virtualenv/bin/activate

si vous configurez workon en .bash_profile ou .bashrc

workon yourvirtualenvname

* veuillez ne pas modifier votre fichier manage.py peut-être ne fonctionne pas correctement et pourrait vous donner de futures erreurs

elin3t
la source
Cela l'a fait pour moi aussi après avoir brûlé la moitié de la nuit à lutter pour que cela fonctionne. Merci beaucoup @ elin3t.
Yax
30

J'ai eu le même problème car j'installais Django en tant que super utilisateur, donc pas dans mon virtualenv. Tu ne devrais pas fairesudo pip install Django

Au lieu de cela, installez-le de cette façon:

$ source ./bin/activate
$ pip install Django
aviggiano
la source
Mais sans sudo, vous obtenez: OSError: [Errno 13] Autorisation refusée: '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django'
malhal
15

Veuillez réinstaller django avec pip:

sudo pip install --upgrade django==1.3

(Remplacez 1.3 par votre version django)

satels
la source
25
Non recommandé. Utiliser sudopour installer dans les répertoires système interférera avec les packages natifs et interrompra très probablement au moins certaines parties de votre installation python. Je recommanderais virtualenv.
Noufal Ibrahim
11

Comme on le sait, c'était un problème de chemin.

la base de mes packages personnalisés partageait un nom avec un répertoire défini dans un / etc / profile. Les packages se trouvaient cependant à un emplacement différent pour le serveur Web. J'ai donc supprimé les entrées incriminées de mon $ PYTHONPATH et j'étais prêt à partir!

Merci pour l'aide.

Grantk
la source
10

Une autre raison possible de ce problème est que votre système d'exploitation exécute python3 par défaut.

Soit vous devez faire explicitement: python2 manage.py

ou vous devez modifier le shebang de manage.py, comme ceci:

#!/usr/bin/env python2

ou si vous utilisez python3:

#!/usr/bin/env python3
des noisettes
la source
pour moi, je devais faire#!/usr/bin/env python2.7
Vic
8

J'ai eu cette erreur en essayant d'exécuter un système embarqué (en utilisant django bien sûr) sur un Raspberry Pi 2 (et pas une VM )

Exécuter ceci:

 sudo pip install Django

Fait le tour!

  • juste au cas où un camarade utilisant Raspbian / Jessie obtiendrait ceci
d1jhoni1b
la source
7

Vous utilisez probablement virtualenvwrapper . N'oubliez pas de sélectionner votre environnement en exécutant:

$ workon env_name
MK
la source
4

Pour moi, mon serveur utilisait Python 2.4. J'ai simplement recherché Python 2.7, qui était installé sur mon serveur, et créé un alias.

alias python=python2.7

Si vous avez besoin d'en savoir plus, j'ai trouvé la solution ici

el_stack
la source
4

J'avais le même problème en essayant de créer une nouvelle application. Si vous écrivez python manage.py startapp myapp, alors il recherche usr / bin / python. Mais vous avez besoin de ce " python " qui se trouve dans le répertoire / bin de votre chemin d'environnement virtuel . J'ai résolu cela en mentionnant le chemin python de virtualenv comme ceci:

<env path>/bin/python manage.py startapp myapp
Tarique
la source
3

Essayez de modifier votre première ligne de manage.py.

Changement

#!/usr/bin/python

par

#!/usr/bin/env python
Gabriel Cavalcante
la source
3
L'inverse m'a aidé. Remplacé #!/usr/bin/env pythonpar#!/usr/bin/python
curlyreggie
env est un bin unix commun pour obtenir des liens bin d'environnement os, selon la configuration du système d'exploitation ou l'installation de python, le bin peut résider dans un chemin différent de / usr / bin / et votre solution ne fonctionnera pas, ne fonctionnera pas non plus si bin 'env' est installé dans un emplacement différent.
Gabriel Cavalcante
3
python3 manage.py runserver

Vérifier la version de Python

Bugs
la source
3

Résolu!!!

Après avoir recherché des âges et essayé toutes ces autres suggestions qui n'ont pas fonctionné, j'ai finalement trouvé la solution pour ma configuration.

Ma configuration / scénario:

  • Windows, Python27
  • Mon projet django est extrait via svn
  • lors de l'exécution de python manage.py runserver dans le nouveau dossier, j'ai eu l'erreur d'importation
  • python manage.py runserver fonctionnait dans le dossier d'origine (à partir duquel je commettrais des modifications) jusqu'à ce que je le supprime

Solution

Supprimez tous les dossiers nommés django dans le même répertoire de manage.py

C'est vrai ... dès que j'ai supprimé le dossier "django" qui ne contenait qu'un fichier __init__.py ... je pourrais exécuter à nouveau le serveur!

Je n'ai aucune idée pourquoi

Dan
la source
Parce qu'un dossier avec un fichier __init__.py est traité comme un module python . Vous ne devez donc pas nommer le répertoire de module implicite django
kaushal agrawal
2

Pour ceux d'entre vous qui utilisent Django 1.6 ou plus récent, notez que execute_manager a été supprimé . Il y a une solution publiée dans la deuxième réponse SO ici .

Owen
la source
2

Stockez le chemin python python dans une variable et exécutez-le, ce qui inclurait les packages manquants.

python_path= `which python` 
$python_path manage.py runserver
Nischay Gulati
la source
1

J'avais un problème similaire. PyCharm n'a pas pu exécuter le serveur mais je pouvais l'exécuter à partir de la ligne de commande. J'ai essayé quel python puis je me suis assuré que PyCharm était le même interprète et tout fonctionnait bien.

Voyage Denton
la source
1

Cette erreur se produit généralement lorsque django n'est pas installé. Si vous avez déjà installé django mais que vous obtenez toujours la même erreur, vous devez travailler dans un environnement virtuel séparé. Vous devez également installer django dans votre environnement virtuel. Lorsque vous êtes dans le shell de la machine virtuelle, faites simplement ceci:

pip installer django

C'est parce que la machine virtuelle a un système de fichiers séparé, elle ne reconnaît pas django même s'il est installé sur votre système.

Rai Ammad Khan
la source
1

J'ai résolu ce problème en changeant #PATH = "$ VIRTUAL_ENV / bin: $ PATH" en PATH = "$ PATH: $ VIRTUAL_ENV / bin" Pour des raisons qui ne sont pas évidentes pour moi, l'exécutable python dans le répertoire virtualenv ne voit pas django mais normalement python installé le fait.

Lowlysquib
la source
1

=================================== SOLUTION ================ ===========================

Tout d'abord: virtualenv

en exécutant la commande: source bin / activate

et installez django car vous obtenez l'erreur liée à 'import django':

pip install django

Puis exécutez:

python manage.py runserver

(Remarque: veuillez remplacer 'runserver' par le nom du programme que vous souhaitez exécuter)

Pour le même problème, cela a fonctionné dans mon cas. =================================== Synopsis =============== ===========================

ERROR:
(Development) Rakeshs-MacBook-Pro:src rakesh$ python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    import django
ModuleNotFoundError: No module named 'django'

Lors de la gestion de l'exception ci-dessus, une autre exception s'est produite:

Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
(Development) Rakeshs-MacBook-Pro:src rakesh$ 
(Development) Rakeshs-MacBook-Pro:src rakesh$ 
(Development) Rakeshs-MacBook-Pro:src rakesh$ python -Wall manage.py test
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

Lors de la gestion de l'exception ci-dessus, une autre exception s'est produite:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    import django
ModuleNotFoundError: No module named 'django'

Lors de la gestion de l'exception ci-dessus, une autre exception s'est produite:

Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

APRÈS L'INSTALLATION de django:

(Development) MacBook-Pro:src rakesh$ pip install django
Collecting django
  Downloading https://files.pythonhosted.org/packages/51/1a/e0ac7886c7123a03814178d7517dc822af0fe51a72e1a6bff26153103322/Django-2.1-py3-none-any.whl (7.3MB)
    100% |████████████████████████████████| 7.3MB 1.1MB/s 
Collecting pytz (from django)
  Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB)
    100% |████████████████████████████████| 512kB 4.7MB/s 
Installing collected packages: pytz, django

APRÈS LA RÉSOLUTION:

(Development) MacBook-Pro:src rakesh$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

August 05, 2018 - 04:39:02
Django version 2.1, using settings 'trydjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[05/Aug/2018 04:39:15] "GET / HTTP/1.1" 200 16348
[05/Aug/2018 04:39:15] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 82564
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 81348
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 80304
Not Found: /favicon.ico
[05/Aug/2018 04:39:16] "GET /favicon.ico HTTP/1.1" 404 1976

Bonne chance!!

Rakesh Kumar
la source
0

votre projet est créé en utilisant une ancienne version de django-admin.py, antérieure à django1.3

pour résoudre ce problème, créez un autre projet django et copiez son manage.py et collez-le dans l'ancien

MBarsi
la source
@dontario. Pas celui-ci, j'ai créé ce projet en utilisant mon ordinateur personnel exécutant 1.3.0 final. Certains projets importés ont été créés avec une version plus ancienne, est-ce possible?
grantk
J'ai essayé de copier mon nouveau mange.py de la nouvelle application vers l'ancienne application qui est également utilisée et j'obtiens toujours la même erreur.
grantk
0

Tout à fait d'accord que c'est un problème de chemin, mais fwiw, j'ai eu la même erreur. Cela était dû à l'erreur d'utiliser un chemin relatif pour mon exécutable Python lors de la configuration de mon environnement virtuel. J'avais fait ceci:

virtualenv -p ~/python_runtimes/2.7.3/bin/python venv2.7.3 --distribute

Au lieu de cela, j'ai dû donner le chemin complet de l'exécutable Python.

HTH, Harlin

Harlin
la source
0

source ~ / blog-venv / bin / activate

choisissez votre virtualenv pour remplacer "blog-venv" ici.

Windmaomao
la source
Merci, cela a résolu mon problème à ce sujet:File "manage.py", line 8, in <module> from django.core.management import execute_from_ ImportError: No module named django.core.management
Shailen
0

Assurez-vous que vous exécutez la bonne instance de Python avec les bons répertoires sur le chemin. Dans mon cas, cette erreur résultait de l'exécution pythonaccidentelle de l' exécutable - j'avais en fait installé Django sous le python2.7framework et les bibliothèques. La même chose pourrait également se produire avec virtualenv.

Chris Johnson
la source
0

D'accord, ça va comme ça:

Vous avez créé un environnement virtuel et le module django appartient uniquement à cet environnement, puisque virtualenv s'isole de tout le reste, vous voyez donc cela.

passez par ceci pour obtenir de l'aide:

http://www.swegler.com/becky/blog/2011/08/27/python-django-mysql-on-windows-7-part-i-getting-started/

1.Vous pouvez basculer vers le répertoire dans lequel votre environnement virtuel est stocké, puis exécuter le module django.

Vous pouvez également installer django globalement sur vos paquets python-> site en exécutant pip ou easy_install

Commande utilisant pip: pip install django

alors faites ceci:

import django print (django.get_version ()) (selon la version de python que vous utilisez, ceci pour les séries python 3+)

et ensuite vous pouvez exécuter ceci: python manage.py runserver et vérifier sur votre navigateur Web en tapant: localhost: 8000 et vous devriez voir la page alimentée par django.

J'espère que cela t'aides.

Ashish
la source
0

J'ai inclus le nom de la nouvelle application à la liste INSTALLED_APPS dans le settings.py "avant" j'ai émis la commande startapp. Une fois que j'ai supprimé l'entrée de la liste, je pouvais créer l'application.

Milad M
la source
0

J'ai résolu ce problème en utilisant la commande 'django-admin' comme suit à la place:

django-admin startproject _project_name

supprimez simplement le ".py" attaché à "django-admin"

M Haziq
la source
0

L'appel d'une application sitepeut reproduire ce problème non plus.

Christian Gutierrez Sierra
la source
0

J'ai eu cela en oubliant que j'avais installé Django en utilisant pip -U, donc il n'était disponible que pour l'utilisateur exécutant mon application Django. Pour exécuter manage.py je devais faire

sudo su -s /bin/bash MY_DJANGO_USER
/PATH/TO/MY/APP/manage.py
EM0
la source
-2

tous les gars n'ont pas mentionné un cas où quelqu'un "comme moi" installerait django avant d'installer virtualenv ... donc pour tous les gens de mon genre si vous faisiez cela ... réinstaller django après avoir activé le virtualenv..i J'espère que cela t'aides

oajmi
la source
Ce n'est pas une solution. C'est un commentaire sur une autre solution par Steve k.
shanemgrey
c'est ce qui m'est arrivé et c'est ainsi que j'ai résolu le
problème