虛擬環境

雖然不是嚴格要求,但強烈建議你在虛擬環境中啟動專案。虛擬環境是一個容器 (目錄),它包含特定版本的 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