web-dev-qa-db-fra.com

Une erreur d'importation ne peut pas importer le nom execute_manager dans un environnement Windows

Je vais vous mettre au courant. J'essaie de configurer un environnement Windows dev. J'ai installé avec succès python, Django et virtualenv + virtualenwrapper ( programme d'installation windows-cmd )

workon env
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Django
>>> Django.VERSION
(1,6,1, 'final',0)
>>> quit()

Mais quand je lance: python manage.py runserver à partir de mon référentiel cloné, j'obtiens cette erreur:

Traceback (most recent call last)"
File "manage.py", line 2, in (module)
from Django.core.management import execute_manager
ImportError: cannot import name execute_manager

Python et Django sont ajoutés à ma variable système PATH:

...C:\Python27\;C:\Python27\Scripts\;C:\PYTHON27\DLLs\;C:\PYTHON27\LIB\;C:\Python27\Lib\site-packages\; 

J'ai aussi essayé avec bash et powershell et j'ai toujours la même erreur.

Est-ce un problème lié à virtualenv? Problème de dépendance Django? Beurk. Comment puis-je résoudre ce problème? Aidez-moi Stackoverflow-kenobi votre seul espoir. 

30
Modelesq

execute_manager est obsolète dans Django 1.4 dans le cadre de la refactorisation de la mise en page du projet et a été supprimé de 1,6 selon la chronologie d'abandon: https://docs.djangoproject.com/fr/1.4/internals/deprecation/#id3

Pour corriger cette erreur, vous devez installer une version compatible de Django pour le projet ou mettre à jour le manage.py avec un nouveau style qui n'utilise pas execute_manager: https://docs.djangoproject.com/fr/stable/releases/1.4/#. updated-default-project-layout-and-manage-py Il est probable que si votre manage.py ne soit pas compatible avec 1.6, le reste du projet ne l’est pas non plus. Vous devriez trouver la version Django appropriée pour le projet.

54
Mark Lavin

@Mark Lavin a bien expliqué le sens de l'erreur et son origine. Je pense que je viens de découvrir pourquoi d'autres peuvent également recevoir ce message d'erreur, alors laissez-le ici pour l'enregistrement.

Je suppose que vous exécutez ceci à partir d'un environnement virtuel.

Lorsque vous démarrez un nouveau projet Django, si vous exécutez Django-admin startproject <myproject>, vous appelez l'installation globale de Django. Si, comme dans mon cas, il provient d'un dépôt obsolète, il peut s'agir d'une ancienne version - dans mon cas:

>> Django-admin --version
>> 1.3.1

Si vous voulez exécuter Django à partir d'un environnement virtuel, vous devez l'invoquer avec Django-admin.py startproject <myproject>. De cette façon, vous obtenez un projet Django avec la version correspondant à votre installation local:

>> Django-admin.py --version
>> 1.6.6
3
Gabriel