虚拟环境

虽然不是严格要求,但强烈建议你在虚拟环境中启动项目。虚拟环境是一个容器 (目录),它包含特定版本的 Python 和一组模块(依赖项),并且不会干扰操作系统的本机 Python 或同一台计算机上的其他项目。

通过为你处理的每个项目设置不同的虚拟环境,各种 Django 项目可以在不同版本的 Python 上运行,并且可以维护自己的依赖项集,而不存在冲突风险。

Python 3.3+

Python 3.3+已经包含一个标准的 venv 模块,你通常可以称之为 pyvenv。在 pyvenv 命令不可用的环境中,你可以通过直接调用模块 python3 -m venv 来访问相同的功能。

要创建虚拟环境:

$ pyvenv <env-folder>
# Or, if pyvenv is not available
$ python3 -m venv <env-folder>

Python 2

如果使用 Python 2,你可以先将其作为一个单独的模块从 pip 安装:

$ pip install virtualenv

然后使用 virtualenv 命令创建环境:

$ virtualenv <env-folder>

激活(任何版本)

现在已设置虚拟环境。要使用它,必须在要使用它的终端中激活它。

激活虚拟环境(任何 Python 版本)

Linux 喜欢:

$ source <env-folder>/bin/activate

Windows 喜欢:

<env-folder>\Scripts\activate.bat

这会更改你的提示以指示虚拟环境处于活动状态。(<env-folder>) $

从现在开始,使用 pip 安装的所有内容都将安装到虚拟环境文件夹中,而不是系统范围内。

离开虚拟环境使用 deactivate

(<env-folder>) $ deactivate

或者:使用 virtualenvwrapper

你也可以考虑使用 virtualenvwrapper ,它使 virtualenv 的创建和激活非常方便,并将它与你的代码分开:

# Create a virtualenv
mkvirtualenv my_virtualenv

# Activate a virtualenv
workon my_virtualenv

# Deactivate the current virtualenv
deactivate

或者:使用 pyenv + pyenv-viritualenv

在需要处理多个 Python 版本的环境中,你可以与 virtualenv 以及 pyenv-virtualenv 一起受益:

# Create a virtualenv for specific Python version
pyenv virtualenv 2.7.10 my-virtual-env-2.7.10

# Create a vritualenv for active python verion
pyenv virtualenv venv34

# Activate, deactivate virtualenv
pyenv activate <name>
pyenv deactivate

使用 virtualenvs 时,在 postactivate 脚本中设置 PYTHONPATHDJANGO_SETTINGS_MODULE 通常很有用。

#!/bin/sh
# This hook is sourced after this virtualenv is activated

# Set PYTHONPATH to isolate the virtualenv so that only modules installed
# in the virtualenv are available
export PYTHONPATH="/home/me/path/to/your/project_root:$VIRTUAL_ENV/lib/python3.4"

# Set DJANGO_SETTINGS_MODULE if you don't use the default `myproject.settings`
# or if you use `django-admin` rather than `manage.py`
export DJANGO_SETTINGS_MODULE="myproject.settings.dev"

设置项目路径

在基础 <env-folder> 中的特殊 .project 文件中设置项目路径通常也很有帮助。执行此操作时,每次激活虚拟环境时,它都会将活动目录更改为指定的路径。

创建一个名为 <env-folder>/.project 的新文件。该文件的内容应该只是项目目录的路径。

/path/to/project/directory

现在,启动你的虚拟环境(使用 source <env-folder>/bin/activateworkon my_virtualenv),你的终端将目录更改为/path/to/project/directory