你是否拥有这样的问题: - python版本需求不同,有时需要2.7,有时需要3.5,有时需要3.7 - 不同项目python需要的版本不同,这个需要3.5,那个需要3.7,还有一个需要2.7 - python版本装多了以后管理混乱,例如pip 的使用,不知道将库具体安装到哪一个版本,python 解释环境也搞不清,完全是碰运气 - python 可能安装了很多外部库,但是此项目只用到了一两个甚至没有用到,感觉很浪费 - 使用python 开发项目时,安装了很多外部库,随着项目开发的越来越多,python 安装的外部库越来越多,到这python 很臃肿 - 不同项目使用的外部库版本不同,导致在切换项目是要先删除之前的外部库,安装这个项目需要的外部库版本 - 现在几乎所有的操作系统都自带python,但大多数都是python2 版本,许多系统组件与其挂钩,不能轻易更改或者删除
所以,我们需要python 版本控制,就引出了本篇博文主题—— pyenv 以及pyenv-virtualenv
pyenv
安装
克隆项目到本地
1
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
添加环境变量
1
2
3
4
5
6$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
注意:
zsh 用户:~/.zshrc
ubuntu 和fedora 用户:~/.bashrc初始化并且开启shims 和自动补全
1
2
3
4
5$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
注意:
zsh 用户:~/.zshrc
ubuntu 和fedora 用户:~/.bashrc重新加载~/.bash_profile 文件
1
2
3
4
5$ source ~/.bash_profile
注意:
zsh 用户:~/.zshrc
ubuntu 和fedora 用户:~/.bashrc测试是否安装完毕 输入命令后,出现以下信息证明安装完毕
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31$ pyenv
pyenv 1.2.16-5-g7097f82
Usage: pyenv <command> [<args>]
Some useful pyenv commands are:
--version Display the version of pyenv
commands List all available pyenv commands
exec Run an executable with the selected Python version
global Set or show the global Python version
help Display help for a command
hooks List hook scripts for a given pyenv command
init Configure the shell environment for pyenv
install Install a Python version using python-build
local Set or show the local application-specific Python version
prefix Display prefix for a Python version
rehash Rehash pyenv shims (run this after installing executables)
root Display the root directory where versions and shims are kept
shell Set or show the shell-specific Python version
shims List existing pyenv shims
uninstall Uninstall a specific Python version
version Show the current Python version and its origin
version-file Detect the file that sets the current pyenv version
version-name Show the current Python version
version-origin Explain how the current Python version is set
versions List all Python versions available to pyenv
whence List all Python versions that contain the given executable
which Display the full path to an executable
See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
使用pyenv
1 | # 查看当前版本 |
pyenv-virtualenv
安装
克隆项目到本地
1
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $PYENV_ROOT/plugins/pyenv-virtualenv
初始化
1
2
3
4
5$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
注意:
zsh 用户:~/.zshrc
ubuntu 和fedora 用户:~/.bashrc重新加载~/.bash_profile 文件
1
$ source ~/.bash_profile
测试是否安装完毕 输入命令提示以下信息,证明安装完毕
1
2
3$ pyenv virtualenv
pyenv-virtualenv: no virtualenv name given.
使用pyenv-virtualenv
1 | # 创建一个3.6.5版本的虚拟环境, 命名为v365env, 然后激活虚拟环境 |
1 | # pyenv versions 命令同样可以查看本机所以的虚拟环境 |
额外说明
pyenv只会管理通过pyenv安装的python版本,你自己在python官网上下载的直接安装的pyenv并不能被管理!!! 同样除了系统自带的python包外,其他直接安装的python包是识别不出来的!!!
参考资料