为什么django-admin.py在root而不是虚拟环境中执行?

时间:2014-03-04 06:52:39

标签: python django ubuntu virtualenv

我在ubuntu工作。我之前在root中安装了django == 1.3。现在,我使用virtualenv将本地虚拟环境名称创建为 local_env 。然后我使用 source 命令激活了 local_env 。但是我没有在这个 local_env 环境中安装django。当我尝试使用

创建django示例项目时
django-admin.py startproject sampleproject

它完美无缺。我的问题是,它没有阻止来自 root 环境的 local_env ?我的意思是它没有像django-admin.py command didn't found那样引发错误。如果有任何疑问,请发表评论。

2 个答案:

答案 0 :(得分:1)

django-admin.py位于操作系统路径中。当您尝试在虚拟环境中执行它时,python将查看它的VE sys.path,如果没有找到,它将搜索操作系统路径,从根环境中找到它,因此没有显示错误。

答案 1 :(得分:0)

根据docs,django-admin.py命令安装在您的系统路径上,因此如果virtualenv找不到此命令,它可能会查找全局sys路径并查找匹配项

如果你想在你的sys路径上安装一个不同版本的django,你需要使用像pip这样的包管理器在你的vritualenv中安装它,然后这将先于全局django-admin。吡啶

要确保您正确执行此操作,请使用

加载virtualenv
dhanna@dhanna:~$ source local_env/bin/actviate

如果成功,您的提示应该在开头具有virtualenv名称 - 例如

(local_env)dhanna@dhanna:~$

请注意,如果在一个shell中激活virtualenv,但在单独的shell中运行python解释器,则将使用全局解释器,因此可以使用全局django-admin.py模块。

接下来,您将要安装django模块

(local_env)dhanna@dhanna:~$ pip install django

要检查虚拟环境中是否安装了django,可以使用包管理工具pip并传递冻结参数

(local_env)dhanna@dhanna:~$ pip freeze

现在您可以使用virtualenv的django-admin.py

版本
(local_env)dhanna@dhanna:~$ django-admin.py startproject sampleproject