Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django virtualenv布局_Python_Django_Virtualenv - Fatal编程技术网

Python Django virtualenv布局

Python Django virtualenv布局,python,django,virtualenv,Python,Django,Virtualenv,我对django很陌生。我有一个关于使用virtualenv进行项目布局的基本问题。当我们创建virtualenv并安装所有依赖项django等时,我是否需要将目录切换到virtualenv,然后在那里创建一个项目?或者我需要在virtualenv之外创建我的项目。如果这是一个非常基本的问题,我深表歉意。这涉及到如何将virtualenv:cd用于virtualenv目录,然后激活它(或者以其他方式激活它,这并不重要)。在linux(或cygwin)上执行此操作的通常方法是从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以来,我就用它来管理(包括删除)我的环境。