1. 背景---管理python開發(fā)環(huán)境
- 應(yīng)對不同的項(xiàng)目開發(fā),需要的python解釋器不同,并且需要包的版本可能也不同
- 為了管理python的解釋器環(huán)境洛退,保證環(huán)境不被污染 不相互干擾
2. 安裝
# 在安裝了pip 條件下
$ pip install virtualenv
# ubuntu apt 安裝
$ apt install python-virtualenv
3. virtualenv 創(chuàng)建區(qū)分python2, python3 環(huán)境
$ virtualenv -p python3 venvpy3
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/xxx/venvpy3/bin/python3.6
Also creating executable in /Users/xxx/venvpy3/bin/python
Installing setuptools, pip, wheel...done.
- python3是選擇創(chuàng)建的解釋器敬锐,venvpy3是虛擬環(huán)境名稱
4. 激活 & 退出
激活
$ source venvpy3/bin/activate
(venvpy3) $ python
Python 3.6.5 (default, Jun 17 2018, 12:13:06)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
退出
(venvpy3) $ deactivate
5. 有趣的是
$ which virtualenv
/usr/local/bin/virtualenv
$ cat /usr/local/bin/virtualenv
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from virtualenv import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
python2 安裝的 virtualenv,執(zhí)行的是python2的virtualenv膘格,安裝的python3的虛擬環(huán)境
6. 移動(dòng)虛擬環(huán)境文件夾后失效的解決方案
有潔癖移動(dòng)了下 已創(chuàng)建的virtualenv python2和3環(huán)境的文件夾
移動(dòng)后激活虛擬環(huán)境,python 财松,python3瘪贱,pip,pip3環(huán)境都選擇了系統(tǒng)默認(rèn)環(huán)境下的
原因
-
source venv/venvpy2/bin/active 后辆毡,雖然進(jìn)入到了虛擬環(huán)境菜秦,但是virtualenv設(shè)置的環(huán)境變量有問題,如下(已改好)
vim active.png 移動(dòng)前 VIRTUAL_ENV="/Users/xxx/venv"
移動(dòng)到 ~/venv/venvpy2后舶掖,環(huán)境變量 VIRTUAL_ENV="/Users/xxx/venv" 找不到正確的目錄
因此執(zhí)行的python, python3, pip, pip3 命令全按系統(tǒng)環(huán)境變量$PATH找的命令執(zhí)行
解決方案
- 如上圖修改activate 的 VIRTUAL_ENV為正確的路徑(修改后進(jìn)入虛擬環(huán)境下球昨,python可以找到正確的解析器)
- 修改同目錄下的pip, pip2, pip3等(保證可以包可以安裝到正確的環(huán)境(具體不改會(huì)不會(huì)有影響未測試))