1. 背景---管理python开发环境
- 应对不同的项目开发,需要的python解释器不同,并且需要包的版本可能也不同
- 为了管理python的解释器环境,保证环境不被污染 不相互干扰
2. 安装
# 在安装了pip 条件下
$ pip install virtualenv
# ubuntu apt 安装
$ apt install python-virtualenv
3. virtualenv 创建区分python2, python3 环境
$ 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是选择创建的解释器,venvpy3是虚拟环境名称
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,执行的是python2的virtualenv,安装的python3的虚拟环境
6. 移动虚拟环境文件夹后失效的解决方案
有洁癖移动了下 已创建的virtualenv python2和3环境的文件夹
移动后激活虚拟环境,python ,python3,pip,pip3环境都选择了系统默认环境下的
原因
-
source venv/venvpy2/bin/active 后,虽然进入到了虚拟环境,但是virtualenv设置的环境变量有问题,如下(已改好)
移动前 VIRTUAL_ENV="/Users/xxx/venv"
移动到 ~/venv/venvpy2后,环境变量 VIRTUAL_ENV="/Users/xxx/venv" 找不到正确的目录
因此执行的python, python3, pip, pip3 命令全按系统环境变量$PATH找的命令执行
解决方案
- 如上图修改activate 的 VIRTUAL_ENV为正确的路径(修改后进入虚拟环境下,python可以找到正确的解析器)
- 修改同目录下的pip, pip2, pip3等(保证可以包可以安装到正确的环境(具体不改会不会有影响未测试))