Django - "aucun module nommé django.core.management"

104

J'obtiens l'erreur suivante en essayant d'exécuter Django à partir de la ligne de commande.

File manage.py, line 8, in <module>
     from django.core.management import execute_from_command_line
ImportError: No module named django.core.management

Des idées pour résoudre ce problème?

Krasimir
la source
Qu'essayez-vous d'exécuter exactement, quelle version de Python, version de Django etc ...?
Jon Clements
La version de mon hôte local est Python 2.6.6 et 1.4.3 Dyango. Le serveur Python est 2.6.6 et pour Dyango ne peut pas vérifier si savoir comment vérifier?
Krasimir
J'ai eu cette erreur au hasard en essayant de faire des migrations et j'étais dans mon environnement virtuel avec Django installé. J'ai simplement exécuté à nouveau la commande et cela a fonctionné.
aalaap le
J'ai cette même erreur. J'ai installé django mais je l'ai installé dans le répertoire dist-packages. Le Dockerfile utilise l'image de base ubuntu. J'ai donc mis à jour le Dockerfile pour l'ajouter, ENV PYTHONPATH="$PYTHONPATH:/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages"mais il ne charge toujours pas l'application django.
alltej

Réponses:

55

Il semble que django ne soit pas installé. Vous devriez vérifier le répertoire produit par cette commande:

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Pour voir si vous avez les packages django dedans.

S'il n'y a pas de dossier django à l'intérieur des packages de site, alors vous n'avez pas installé django (du moins pour cette version de python).

Il est possible que vous ayez plus d'une version de python installée et que django soit à l'intérieur d'une autre version. Vous pouvez trouver toutes les versions de python si vous tapez pythonet appuyez sur TAB. Voici tous les différents python que j'ai.

$python
python            python2-config    python2.6         python2.7-config  pythonw2.5
python-config     python2.5         python2.6-config  pythonw           pythonw2.6
python2           python2.5-config  python2.7         pythonw2          pythonw2.7

Vous pouvez exécuter la commande ci-dessus pour chaque version de python et regarder dans le répertoire site-packages de chacune pour voir si l'un d'entre eux a installé django. Par exemple:

python2.5 -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
python2.6 -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Si vous trouvez django à l'intérieur de say python2.6, essayez votre commande d'origine avec

python2.6 manage.py ...
RaviU
la source
C'est ce qui vient juste après la commande "/usr/lib/python2.6/site-packages"
Krasimir
Allez dans le dossier "/usr/lib/python2.6/site-packages" et voyez s'il y a un dossier appelé django à l'intérieur.
RaviU
Evrything else not Django: D
Krasimir
Bonjour, veuillez vérifier ma réponse modifiée. Peut-être que votre django est dans une autre version de python.
RaviU
1
Si vous avez installé django en utilisant virtualenv ou dans un environnement virtuel, vous devez être dans l'environnement virtuel pour qu'il s'exécute, sauf si vous l'avez installé globalement dans le système.
Ramon Suarez
41
sudo pip install django --upgrade 

a fait l'affaire pour moi.

Arbre de code
la source
4
Votre réponse a fonctionné pour moi, alors je lui ai donné un vote positif. Cependant, juste votre réponse ne suffisait pas, parce que quand je courais , sudo pip install django --upgradeil m'a donné une nouvelle erreur: No module named psycopg2. Alors, j'ai couru sudo pip install psycopg2 --upgrade, et ça a fait l'affaire.
Dorian Dore
2
Il s'est avéré que je n'avais pas installé django ... Même si je l'avais déjà utilisé sur la machine. Bizarre.
James111 du
J'ai eu un problème de timeout, donc je l'ai fait sudo pip install --default-timeout=100 django --upgradeet tout s'est bien passé.
Zap le
Si vous utilisez "pyenv", vous aurez besoin des éléments suivants:pip install django --upgrade --user
Inyoka
30

J'ai eu la même erreur et je l'ai corrigée de cette manière:

J'ai dû activer mon environnement virtuel à l'aide de la commande suivante

source python2.7/bin/activate
Anagha
la source
22

Très probablement dans votre manage.pypremière ligne commence par !/usr/bin/pythonce qui signifie que vous utilisez le python global du système plutôt que celui de votre environnement virtuel.

alors remplacez

/usr/bin/python

avec

~/projectpath/venv/bin/python

et tu devrais être bon.

mgPePe
la source
Merci. Ça m'a aidé.
Serg Smyk
Mon projet avait un script bash qui appelait une partie de l'application, et dans ce script bash python startapp, j'ai dû le changer /path/to/venv/bin/python startappet cela a fonctionné. Merci de le signaler !!
Gordster le
13

eh bien, j'ai rencontré la même erreur aujourd'hui après avoir installé virtualenv et django. Pour moi, c'était que j'avais utilisé sudo ( sudo pip install django ) pour installer django, et j'essayais d'exécuter le runserver manage.py sans sudo . Je viens d'ajouter sudo et cela a fonctionné. :)

utilisateur1578297
la source
10

Utilisez-vous un environnement virtuel avec Virtual Wrapper? Êtes-vous sur un Mac?

Si c'est le cas, essayez ceci:

Entrez ce qui suit dans votre ligne de commande pour démarrer l'environnement virtuel, puis travaillez dessus

1.)

source virtualenvwrapper.sh

ou

source /usr/local/bin/virtualenvwrapper.sh

2.)

workon [environment name]

Remarque (d'un débutant) - ne mettez pas de crochets autour du nom de votre environnement

Pete Varley
la source
Il m'a fallu environ deux secondes pour comprendre que virtualenv n'était pas activé, mais c'était mon problème ... alors voter pour Google depuis que j'ai appuyé une fois sur le bouton google et que je n'ai rien lu de ce qui se passait.
RobotHumans
7

J'ai le même problème lors de l'exécution de la commande-

python manage.py startapp <nom_app>

mais le problème avec moi est que j'exécutais cette commande à partir d'un environnement virtuel.Alors, activez d'abord votre environnement virtuel et exécutez à nouveau la commande -

Rahul Satal
la source
1
Mon projet avait un script bash qui appelait une partie de l'application, et dans ce script bash python startapp, j'ai dû le changer /path/to/venv/bin/python startappet cela a fonctionné.
Gordster
5

Ce problème se produit lorsque django n'est pas installé sur votre ordinateur. Lorsque django n'est pas installé, ce qui signifie que le module django.core.management n'est pas installé non plus. Donc, il n'a pas trouvé ce module et il donne une erreur.
Pour résoudre ce problème, nous devons installer django en utilisant pip. Ouvrez la ligne de commande cmd (sous Windows) et tapez comme

pip install django

Cette commande installera django sur votre ordinateur. Si vous n'avez pas installé pip. vous devez installer pip. Voici comment installer pip sur Windows

Harun ERGUL
la source
5

Je vis la même chose et c'est ce que je fais.

D'abord mon installation de

pip install -r requirements.txt

n'est pas sur mon environnement actif. J'ai donc activé mon environnement puis relancez le

pip install -r requirements.txt

Jek Hatulan
la source
4

Bon alors ç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
3

Au cas où cela serait utile pour les autres ... J'ai eu ce problème car mon virtualenv était par défaut python2.7 et j'appelais Django en utilisant Python3 tout en utilisant Ubuntu.

pour vérifier quel python mon virtualenv utilisait:

$ which python3
>> /usr/bin/python3

a créé un nouveau virtualenv avec python3 spécifié (à l'aide du wrapper virtualenv https://virtualenvwrapper.readthedocs.org/en/latest/ ):

$ mkvirtualenv --python=/usr/bin/python3 ENV_NAME

le chemin python doit maintenant pointer vers le python virtualenv:

$ which python3
>> /home/user/.virtualenvs/ENV_NAME/bin/python3
sk8asd123
la source
2

Cela se produit également si vous modifiez la structure de répertoires de votre projet python (je l'ai fait, puis j'ai été perplexe face au changement de comportement). Si vous le faites, vous devrez changer une ligne dans votre fichier / bin / activate. Alors, disons que votre projet était à

/User/me/CodeProjects/coolApp/

et votre fichier d'activation est à

/User/me/CodeProjects/coolApp/venv/bin/activate

lorsque vous configurez votre projet, vous avez changé votre projet en

/User/me/CodeProjects/v1-coolApp/

ou quelque chose. Vous auriez alors besoin d'ouvrir

/User/me/CodeProjects/v1-coolApp/venv/bin/activate

trouver la ligne où il est dit

VIRTUAL_ENV="/User/me/CodeProjects/coolApp"
export VIRTUAL_ENV

et changez-le en

VIRTUAL_ENV="/User/me/CodeProjects/v1-coolApp"

avant de réactiver

adamadam
la source
2

Dans mon cas, j'utilise Ubuntu. Le problème peut être que je n'ai pas l'autorisation d'écrire dans ce dossier en tant qu'utilisateur normal. Vous pouvez simplement ajouter le sudodevant votre commande et cela devrait fonctionner parfaitement. Dans mon cas sudo python manage.py syncdb.

Épuisé
la source
2

J'ai eu le même problème et la raison pour laquelle je recevais ce message était parce que je faisais "manage.py runserver" alors que "python manage.py runserver" l'a corrigé.

MAhsan
la source
2
Notez que si Python 3 est utilisé, il doit l'être python3 manage.py runserver. Sinon, l'erreur d'importation sera toujours présente.
rbaleksandar le
2

J'ai eu le même problème et la suite a bien fonctionné, vous devez naviguer dans le dossier principal de votre projet que taper:

source bin/activate 
Poisson rouge
la source
1

avait le même problème.Exécutez la commande 'python manage.py migrate' en tant que root. fonctionne très bien avec l'accès root (sudo python manage.py migrate)

Hemanth Gowda
la source
1
C'est en quelque sorte traiter le symptôme et non la cause. Si sudo fonctionne, c'est probablement un problème d'autorisations.
evandentremont
Sûrement, juste un moyen de diagnostiquer le problème.
Hemanth Gowda
1

Mon cas, j'ai utilisé pyCharm 5 sur mac. J'ai également eu ce problème et après avoir exécuté cette commande, mon problème a été résolu

sudo pip install django --upgrade 
Amir
la source
1

Vous pouvez l'essayer comme ceci: python3 manage.py migrate(assurez-vous d'être dans le src/répertoire)

Vous pouvez également essayer avec pip install -r requirements.txt(assurez-vous de voir le requirements.txtfichier lorsque vous tapez lsaprès la migration

Si après tout ça ne marche toujours pas, essayez pip install django

J'espère que ça aide


la source
0

Vous devez d'abord choisir votre projet avant d'exécuter le serveur, tapez ceci workon your_project_name puis python manage.py runserver

Syiwa Wahyu Saputra
la source
-1

Un conflit de propriété de fichier et de répertoire entraînera des problèmes ici. Assurez-vous que la propriété des répertoires et des fichiers du projet appartient à l'utilisateur actuel. (Vous pouvez les changer en utilisant la commande chown avec l'option -R.) Essayez de réexécuter la commande: cela a résolu le problème pour moi lors de l'exécution de l'exemple "First Django App":

python manage.py startapp polls
keesar
la source
-1

J'ai eu le même problème en essayant d'utiliser le serveur de runes python manage.py . Dans mon cas, j'utilise juste sudo su . Utilisez le terminal comme root et réessayez et cela fonctionne partiellement. J'utilise donc python manage.py migrate comand et le corrige.

user314165
la source