Python + Django + Virtualenv 导入 django.core 失败

4 投票
2 回答
1296 浏览
提问于 2025-04-17 17:17

我在Windows 7上使用的是Python 2.7.3。

我把PATH设置成了C:\python27,这是Python的原始安装路径。

首先,我创建了一个新的虚拟环境,叫做“django”,没有使用任何选项。

virtualenv django

第二步,激活这个虚拟环境。

c:\workspace\py-envs\django\Scripts\activate

第三步,使用pip安装Django。

pip install django

第四步,像下面这样执行命令django-admin.py startproject SOME_NAME

然后,我在导入django.core这个包的时候遇到了问题。

失败了

(django) c:\workspace\python>django-admin.py startproject a
(django) c:\workspace\python>python django-admin.py startproject a
(django) c:\workspace\python>c:\py-envs\django\Scripts\python django-admin.py startproject a

错误信息

Traceback (most recent call last):
  File "C:\workspace\py-envs\django\Scripts\django-admin.py", line 2, in <module>
    from django.core import management
ImportError: No module named django.core

成功了

(django) c:\workspace\python>python c:\py-envs\django\Scripts\django-admin.py startproject a

检查过了

  • django-admin.py确实存在于c:\py-envs\django\Scripts\这个路径下。
  • 虚拟环境已经在PATH中添加了C:\py-envs\django\Scripts\这一行(通过执行echo %PATH%检查过)。
  • pip freeze的结果只显示Django==1.5。

我想通过第一个命令开始一个项目:

python django-admin.py startproject a

我还能做些什么呢?

2 个回答

1

这个问题发生的原因是,Windows上的Python解释器总是使用全局解释器,而不是当前的Python虚拟环境解释器。

举个例子:
C:\python27\python.exe # Windows总是使用这个

而不是这个:

C:\envs\my_env\Scripts\python.exe

在官方文档中,我发现了这个信息:
http://docs.python.org/2/using/cmdline.html?highlight=#-m
“当使用 -m 模块名调用时,给定的模块会在Python模块路径中找到并作为脚本执行。”

如果你在控制台输入 echo %PATH%,你会看到虚拟环境的路径在最前面。因此,

(django) c:\workspace\python>python -m django-admin startproject my_new_project  

应该可以正常工作。

2

在虚拟环境(virtualenv)中,调用 django-admin 的唯一默认方式是通过 django-admin.py 来调用。

下面这个命令是可以正常工作的:

  • django-admin.py startproject PROJECT_NAME

而下面这些命令则无法正常工作:

  • django-admin startproject PROJECT_NAME
  • python django-admin startproject PROJECT_NAME
  • python django-admin.py startproject PROJECT_NAME

撰写回答