虚拟环境
虽然不是严格要求,但强烈建议你在虚拟环境中启动项目。虚拟环境是一个容器 (目录),它包含特定版本的 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
脚本中设置 PYTHONPATH
和 DJANGO_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/activate
或 workon my_virtualenv
),你的终端将目录更改为/path/to/project/directory
。