导入错误无法在Windows环境中导入名称execute_manager

时间:2014-01-03 14:51:04

标签: python django virtualenv virtualenvwrapper

我会让你加快速度。我正在尝试设置一个Windows开发环境。我已经成功安装了python,django和virtualenv + virtualenwrapper(windows-cmd installer

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()

但是当我从克隆的存储库运行:python manage.py runserver时,我收到此错误:

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和django都被添加到我的系统变量PATH:

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

我也尝试过使用bash和powershell,我仍然会遇到同样的错误。

这是一个与virtualenv相关的问题吗? Django依赖问题?让人惊讶。我该如何解决这个问题?帮助我Stackoverflow-kenobi你唯一​​的希望。

3 个答案:

答案 0 :(得分:54)

execute_manager在Django 1.4中作为项目布局重构的一部分被弃用,并且在每个弃用时间轴中被删除1.6:https://docs.djangoproject.com/en/1.4/internals/deprecation/#id3

要解决此错误,您应该为项目安装兼容版本的Django,或者将manage.py更新为不使用execute_manager的新样式:https://docs.djangoproject.com/en/stable/releases/1.4/#updated-default-project-layout-and-manage-py最有可能是{ {1}}与1.6不兼容,那么项目的其余部分也不兼容。你应该为项目找到合适的Django版本。

答案 1 :(得分:3)

@Mark Lavin很好地解释了错误的含义以及它是如何产生的。我想我刚刚发现为什么其他人也可能会收到此错误消息,因此请将其留在此处备案。

我假设你是在虚拟环境中运行它。

启动新的Django项目时,如果运行django-admin startproject <myproject>,则调用Django的全局安装。如果,就像在我的情况下,它来自陈旧的回购,它可能是旧版本 - 在我的情况下:

>> django-admin --version
>> 1.3.1

如果要在虚拟环境中运行Django,则需要使用django-admin.py startproject <myproject>调用它。这样,您将获得一个Django项目,其版本与 local 安装相对应:

>> django-admin.py --version
>> 1.6.6

答案 2 :(得分:0)

我收到此错误是因为我的django-admin.py文件夹中有/usr/local/bin的旧版本,我忘了为我的新项目创建一个新的virtualenv。

请记住,新项目的步骤应该是:

  1. 首先为您的新项目创建一个新的virtualenv:
    mkvirtualenv <mynewproj>
  2. 如有必要,请更新virtualenv的Python版本:
    virtualenv --python $(which python3.6) ~/.virtualenvs/<mynewproj>
  3. 然后创建您的Django项目文件夹结构:
    django-admin startproject <django project name>
  4. 我还删除了旧的过时的/usr/local/bin/django-admin.py,因为它是在我发现virtualenv的欢乐之前创建的。