【发布时间】:2013-07-24 14:57:58
【问题描述】:
我对 django 很陌生。我只是对使用 virtualenv 的项目布局有一个非常基本的问题。当我们创建 virtualenv 并安装所有依赖项-django 等时,我是否需要将我的目录切换到 virtualenv 然后在那里创建一个项目?或者我是否需要在 virtualenv 之外创建我的项目。如果这是一个非常基本的问题,我深表歉意。
【问题讨论】:
标签: python django virtualenv
我对 django 很陌生。我只是对使用 virtualenv 的项目布局有一个非常基本的问题。当我们创建 virtualenv 并安装所有依赖项-django 等时,我是否需要将我的目录切换到 virtualenv 然后在那里创建一个项目?或者我是否需要在 virtualenv 之外创建我的项目。如果这是一个非常基本的问题,我深表歉意。
【问题讨论】:
标签: python django virtualenv
不,您创建虚拟环境的目录是完全独立的,不是您创建 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 管理。
virtualenvwrapper project 通过在一个中心位置管理您的虚拟环境使这变得更容易。
【讨论】:
pip install django==1.4)这是最佳实践,稍后您可以pip freeze 并创建一个 requirements.txt,然后您可以pip install在其他机器上,保留您的项目可能具有的版本依赖关系。
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/
【讨论】:
这涉及到您如何使用 virtualenv 的核心:cd 到 virtualenv 目录,然后激活它(或者反过来 - 这并不重要)。在 linux(或 cygwin)上执行此操作的常用方法是从 virtualenv 内部获取 ./bin/activate/。
此时,如果您使用pip 或python,它们将是该虚拟环境的本地。您应该只在激活 virtualenv 之后执行安装并运行您的东西。
所以,回答您的问题:在您开始安装或执行任何操作之前切换并激活。在 virtualenv 中执行所有操作,并激活它。
【讨论】: