按照<< Python多版本环境管理之pyenv >>的操作安装pyenv后.我们可以方便的在不同版本中切换了.如果只开发一个项目的是没问题,但是如果同时进行多个项目,不同项目又依懒同一个包的不同版本的话就比较尴尬了.所以还需要基于同样的版本做不同的环境.
Linux下安装完pyenv后会附带安装pyenv-virtualenv,Mac系统需要自己手动安装一下
brew install pyenv-virtualenv
安装后确认:
Linux:
ls ~/.pyenv/plugins
pyenv-doctor pyenv-installer pyenv-update pyenv-virtualenv pyenv-which-ext python-build
Mac:
which pyenv-virtualenv
/usr/local/bin/pyenv-virtualenv
准备就绪,开工
1.创建虚拟环境
先确认一下本机的python版本
pyenv versions
* system (set by /root/.pyenv/version)
3.7.3
3.8.2
手动指定3.7.3版本 后面跟的虚拟环境的名字
pyenv virtualenv 3.7.3 project-a-3.7.3
Looking in links: /tmp/tmpuhxuv288
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.7.3/envs/project-a-3.7.3/lib/python3.7/site-packages (40.8.0)
Requirement already satisfied: pip in /root/.pyenv/versions/3.7.3/envs/project-a-3.7.3/lib/python3.7/site-packages (19.0.3)
不指定版本,默认会使用当前环境版本.
创建时建议使用工程名+Python版本
2.查看虚拟环境
pyenv virtualenvs
3.7.3/envs/project-a-3.7.3 (created from /root/.pyenv/versions/3.7.3)
project-a-3.7.3 (created from /root/.pyenv/versions/3.7.3)
再创建一个project-b并查看
pyenv virtualenv 3.7.3 project-b-3.7.3
Looking in links: /tmp/tmpa9ctl5a1
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.7.3/envs/project-b-3.7.3/lib/python3.7/site-packages (40.8.0)
Requirement already satisfied: pip in /root/.pyenv/versions/3.7.3/envs/project-b-3.7.3/lib/python3.7/site-packages (19.0.3)
pyenv virtualenvs
3.7.3/envs/project-a-3.7.3 (created from /root/.pyenv/versions/3.7.3)
3.7.3/envs/project-b-3.7.3 (created from /root/.pyenv/versions/3.7.3)
project-a-3.7.3 (created from /root/.pyenv/versions/3.7.3)
project-b-3.7.3 (created from /root/.pyenv/versions/3.7.3
好了,我们现在有两个项目的同一个版本了
3.激活虚拟环境
pyenv activate project-a-3.7.3
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
验证当前版本
python -V
Python 3.7.3
4.退出虚拟环境
pyenv deactivate
再次验证版本
python -V
Python 2.7.17
发现版本已切回系统版本
5.删除虚拟环境
pyenv uninstall project-a-3.7.3
pyenv-virtualenv: remove /root/.pyenv/versions/3.7.3/envs/project-a-3.7.3? y
再次查看虚拟环境发现只有project-b了
pyenv virtualenvs
3.7.3/envs/project-b-3.7.3 (created from /root/.pyenv/versions/3.7.3)
project-b-3.7.3 (created from /root/.pyenv/versions/3.7.3)
that's all