# Python `virtualenv`指南
> 原文: [https://thepythonguru.com/python-virtualenv-guide/](https://thepythonguru.com/python-virtualenv-guide/)
* * *
于 2020 年 1 月 7 日更新
* * *
**注意**:
本教程需要`pip`,如果您尚未這樣做,請首先通過[安裝`pip`](/installing-packages-in-python-using-pip/)。
`virtualenv`是用于分隔項目所需的不同依賴項的工具。 在處理多個項目時,一個項目需要一個與另一個項目完全不同的包版本是一個常見的問題,`virtualenv`可幫助我們解決此類問題。 它還有助于防止污染全局站點包。
## 安裝`virtualenv`
* * *
`virtualenv`只是 [pypi](https://pypi.python.org/pypi/virtualenv/13.1.2) 提供的包,您可以使用`pip`安裝`virtualenv`。
```py
pip install virtualenv
```
安裝后,您可能需要將`C:\Python34\Scripts`添加到`PATH`環境變量中。 這樣,諸如`pip`,`virtualenv`之類的命令將在任何目錄級別可用。
## 創建虛擬環境
* * *
創建一個名為`python_project`的新目錄,并將當前工作目錄更改為`python_project`。
```py
mkdir python_project
cd python_project
```
要在`python_project`中創建虛擬環境,您需要發出以下命令。
```py
virtualenv my_env
```
這將在`python_project`內創建一個新文件夾`my_env`。 此文件夾將包含用于安裝包的 python 可執行文件和`pip`庫的副本。 在這里,我們使用`my_env`作為名稱,但是您可以使用任何您想要的名稱。 現在您可以使用虛擬環境了,您只需要激活它即可。
在本教程中,我們有一點要使用 python 3.4 安裝了`virtualenv`,假設您也有 python 2.7 并想創建一個使用 python 2.7 而不是 3.4 的虛擬環境,則可以使用以下命令進行操作。
```py
virtualenv -p c:\Python27/python.exe my_env
```
## 激活虛擬環境
* * *
如果您在 Windows 上,則需要執行以下命令。
```py
my_env\Scripts\activate.bat
```
在 Linux 上,請輸入。
```py
source my_env/bin/activate
```
發出上述命令后,您的命令提示符字符串將發生變化,看起來像這樣,
```py
( my_env ) Path_to_the_project: $
```
注意`( my_env )`,這表明您現在正在虛擬環境下運行。
現在您的虛擬環境已激活。 您在此處安裝的所有內容僅會被該項目使用。
讓我們嘗試安裝請求包。
在 Windows 中,輸入以下代碼。
```py
my_env\Scripts\pip.exe install requests
```
您不能在 Windows 中僅使用`pip`安裝請求,因為如果將`C:\Python34\Scripts`添加到`PATH`環境變量中,它將執行全局`pip`。 如果尚未添加,則會出現錯誤。
同樣,在 Linux 中,您需要執行以下代碼
```py
my_env\Scripts\pip install requests
```
## 停用虛擬環境
* * *
要停用虛擬環境,您需要使用以下命令。
```py
deactivate
```
此命令將使您返回系統的默認 python 解釋器,我們可以在其中將包安裝在全局站點包中。
您現在應該能夠看到使用`virtualenv`的動機。 它可以幫助我們組織項目的需求而不會相互沖突。
* * *
* * *
- 初級 Python
- python 入門
- 安裝 Python3
- 運行 python 程序
- 數據類型和變量
- Python 數字
- Python 字符串
- Python 列表
- Python 字典
- Python 元組
- 數據類型轉換
- Python 控制語句
- Python 函數
- Python 循環
- Python 數學函數
- Python 生成隨機數
- Python 文件處理
- Python 對象和類
- Python 運算符重載
- Python 繼承與多態
- Python 異常處理
- Python 模塊
- 高級 Python
- Python *args和**kwargs
- Python 生成器
- Python 正則表達式
- 使用 PIP 在 python 中安裝包
- Python virtualenv指南
- Python 遞歸函數
- __name__ == "__main__"是什么?
- Python Lambda 函數
- Python 字符串格式化
- Python 內置函數和方法
- Python abs()函數
- Python bin()函數
- Python id()函數
- Python map()函數
- Python zip()函數
- Python filter()函數
- Python reduce()函數
- Python sorted()函數
- Python enumerate()函數
- Python reversed()函數
- Python range()函數
- Python sum()函數
- Python max()函數
- Python min()函數
- Python eval()函數
- Python len()函數
- Python ord()函數
- Python chr()函數
- Python any()函數
- Python all()函數
- Python globals()函數
- Python locals()函數
- 數據庫訪問
- 安裝 Python MySQLdb
- 連接到數據庫
- MySQLdb 獲取結果
- 插入行
- 處理錯誤
- 使用fetchone()和fetchmany()獲取記錄
- 常見做法
- Python:如何讀取和寫入文件
- Python:如何讀取和寫入 CSV 文件
- 用 Python 讀寫 JSON
- 用 Python 轉儲對象