Python + Django + Virtualenv 导入 django.core 失败
我在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
。