Python Django virtualenv布局
我对django很陌生。我有一个关于使用virtualenv进行项目布局的基本问题。当我们创建virtualenv并安装所有依赖项django等时,我是否需要将目录切换到virtualenv,然后在那里创建一个项目?或者我需要在virtualenv之外创建我的项目。如果这是一个非常基本的问题,我深表歉意。这涉及到如何将virtualenv:cd用于virtualenv目录,然后激活它(或者以其他方式激活它,这并不重要)。在linux(或cygwin)上执行此操作的通常方法是从virtualenv内部获取Python Django virtualenv布局,python,django,virtualenv,Python,Django,Virtualenv,我对django很陌生。我有一个关于使用virtualenv进行项目布局的基本问题。当我们创建virtualenv并安装所有依赖项django等时,我是否需要将目录切换到virtualenv,然后在那里创建一个项目?或者我需要在virtualenv之外创建我的项目。如果这是一个非常基本的问题,我深表歉意。这涉及到如何将virtualenv:cd用于virtualenv目录,然后激活它(或者以其他方式激活它,这并不重要)。在linux(或cygwin)上执行此操作的通常方法是从virtualenv
/bin/activate/
在这一点上,如果您使用pip
或python
它们将是该virtualenv的本地版本。您应该只执行安装,并在激活virtualenv后运行您的东西
所以,要回答您的问题:在开始安装或执行任何操作之前切换并激活。在VirtualEnvironment中执行所有操作,并激活它。不,创建虚拟环境的目录是完全独立的,而不是创建django项目的目录 事实上,您通常会将所有虚拟环境放在一个单独的目录中;对我来说,我把它们放在
$HOME/work/.envs
中(注意
,这会使目录在默认情况下隐藏),因此我的工作流变成:
$ virtualenv $HOME/work/.envs/new_env
$ source $HOME/work/.envs/new_env/bin/activate
(new_env)$ pip install django
(new_env)$ cd ~/projects
(new_env)/projects$ django-admin.py startproject atestproj
你看,你实际上没有对虚拟环境目录做任何事情;它完全由virtualenv
和pip
管理
通过在中心位置管理您的虚拟环境,可以更轻松地实现这一点。与virtualenv一起使用的目录结构应如下所示:
|-- project_name
|-- django
|-- project_name
|-- virtualenv
|-- project_name
|-- bin
当然,这并不是您的项目目录结构应该如何布局的最终答案。然而,多年来,它对我和我认识的其他人都起到了作用
我强烈推荐初学者使用“twoscoops”django项目目录结构和教程:
我还推荐VirtualNVRapper,以便更轻松地管理虚拟环境:
感谢您的回复。然而,我看过一段youtube视频,他们先激活它,然后更改目录。有更好的方法吗?@hansaraj不管你是否先切换到目录。您必须在执行任何操作之前激活,通常在目录中执行操作更方便。如果你不想把cd放进去,那很好,但这会让事情变得不那么方便。谢谢你的回复。我有个问题。假设在我的计算机的根目录中安装了django 1.4。然后在virtualenv中安装django 1.5。然后我在virtualenv之外创建django项目,比如在桌面上。我的项目将使用哪个django版本?1.4或1.5?如果您没有激活虚拟环境,它将使用1.4,如果您激活了虚拟环境,那么无论您在文件系统中的什么位置,它都将使用1.5。您可以明确指定要使用的版本(即:
pip install django==1.4
),这是最佳做法,正如以后一样,您可以pip freeze
并创建requirements.txt,然后在其他机器上pip安装该文件,从而保留项目可能具有的版本依赖性。@BurhanKhalid现在有意义了。为什么要隐藏virtualenv目录?我的意思是,在你的评论中,你说你通常会隐藏virtualenv目录;环境目录不是我想意外修改或删除的地方,所以我将它们保存在一个隐藏目录中;但自从我开始在工作流中使用VirtualNVRapper以来,我就用它来管理(包括删除)我的环境。