【问题标题】:Django virtualenv layoutDjango virtualenv 布局
【发布时间】:2013-07-24 14:57:58
【问题描述】:

我对 django 很陌生。我只是对使用 virtualenv 的项目布局有一个非常基本的问题。当我们创建 virtualenv 并安装所有依赖项-django 等时,我是否需要将我的目录切换到 virtualenv 然后在那里创建一个项目?或者我是否需要在 virtualenv 之外创建我的项目。如果这是一个非常基本的问题,我深表歉意。

【问题讨论】:

    标签: python django virtualenv


    【解决方案1】:

    不,您创建虚拟环境的目录是完全独立的,不是您创建 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
    

    所以你看,你实际上并没有对虚拟环境目录做任何事情;它完全由virtualenvpip 管理。

    virtualenvwrapper project 通过在一个中心位置管理您的虚拟环境使这变得更容易。

    【讨论】:

    • 感谢您的回复。我有个问题。假设我在计算机的根目录中安装了 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 install在其他机器上,保留您的项目可能具有的版本依赖关系。
    • @BurhanKhalid 现在说得通了。你为什么要隐藏你的 virtualenv 目录呢?我的意思是在你的评论中你说你通常隐藏 virtualenv 目录。
    • 这只是个人喜好;环境目录不是我想不小心修改或删除的地方,所以我将它们保存在隐藏目录中;但自从我开始在我的工作流程中使用 virtualenvwrapper,我用它来管理(包括删除)我的环境。
    【解决方案2】:

    virtualenv 使用的目录结构如下:

    |-- project_name
        |-- django
            |-- project_name
    
    |-- virtualenv
        |-- project_name
            |-- bin
    

    这当然不是你的项目目录结构应该如何布局的明确答案——然而,多年来它对我和我认识的其他人都有效。

    我向初学者强烈推荐“twoscoops”的 django 项目目录结构和教程: https://github.com/twoscoops/django-twoscoops-project

    我还推荐 virtualenvwrapper,以使管理虚拟环境更容易: http://virtualenvwrapper.readthedocs.org/en/latest/

    【讨论】:

      【解决方案3】:

      这涉及到您如何使用 virtualenv 的核心:cd 到 virtualenv 目录,然后激活它(或者反过来 - 这并不重要)。在 linux(或 cygwin)上执行此操作的常用方法是从 virtualenv 内部获取 ./bin/activate/

      此时,如果您使用pippython,它们将是该虚拟环境的本地。您应该只在激活 virtualenv 之后执行安装并运行您的东西

      所以,回答您的问题:在您开始安装或执行任何操作之前切换并激活。在 virtualenv 中执行所有操作,并激活它。

      【讨论】:

      • 感谢您的回复。但是,我看过一个 youtube 视频,他们首先将其激活,然后更改目录。有没有首选的方法?
      • @hansaraj 是否先切换到目录都没关系。做任何事情之前必须先激活,一般在目录里面做事情比较方便。如果你不想 cd 进入它,那很好,但它会让事情变得不那么方便。
      猜你喜欢
      • 2012-08-04
      • 2012-06-16
      • 2014-08-20
      • 2011-12-22
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多