本文地址:https://www.jianshu.com/p/ab3b3811d32b
一、简介
在配置Python环境的时候,我们常常会遇到环境冲突的问题,特别是在多个Python版本的时候。例如Linux系统基本都会自带一个Python2.7,这个Python是Linux本身需要使用的,所以我们一般不会去使用这个Python,而是自己安装一个,这个时候就常常遇到冲突的问题。
当然,如果熟悉Python的配置的话,是不会遇到这个问题的,但如果需要配置多个Python版本,且之间不互相影响的话,还是非常的麻烦。
所幸现在有几个比较完善的工具,可以帮助我们非常方便的一条龙搭建Python环境,本篇文章讲解的则是如何使用 Pyenv
来搭建Python环境,这是作者目前非常喜欢使用的一种方式。Pyenv
是一个Python版本管理工具,可以让你轻松的安装多个版本的Python,并且在Python的各个版本之间简单快速的切换,非常简单实用。
二、安装配置
2.1. Linux安装Pyenv
在安装Pyenv
之前,我们需要先把Python的依赖项装好,如下所示:
sudo apt-get install gcc libbz2-dev libncurses5-dev libgdbm-dev liblzma-dev libsqlite3-dev libssl-dev libreadline6-dev
然后就可以使用GIT从Github上下载下载Pyenv的源码了,Pyenv不需要编译等操作,下载下来之后放到某一个位置即可,如下所示:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
在这里是把Pyenv下载下来后,放到了 ~
家目录下,起名为 .pyenv
的隐藏目录中。这只是一个官方比较推荐的位置,实际上你可以自行选择把你的 .pyenv
目录放到任何位置。
在下载完毕之后,还需要配置一下Pyenv的环境变量以及Pyenv启动的语句:
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
如果你是使用的 zsh
,那么需要把 ~/.bashrc
修改为 ~/.zshenv
,按照系统的不同,可能还需要修改为 ~/.bash_profile
。
如果你修改了 .pyenv
的位置,那么你还要将上面命令中的对应路径进行修改。
配置完毕之后重启 shell
即可生效:
exec "$SHELL"
2.2. Mac安装Pyenv
如果你是使用的Mac系统,那么官方推荐的安装方式是使用Homebrew来进行安装,Homebrew的使用方式请自行搜索。
使用Homebrew安装非常的简单,一行代码即可,Homebrew会自动下载依赖项:
brew install pyenv
安装完毕之后会有提示你将pyenv init
添加到Shell中,输入以下命令即可:
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
之后重启终端就可以使用了。
注:如果使用的是Mac os最近的10.14版本,那么使用 Pyenv
安装Python时,可能会遇到 zlib
的报错,这种情况使用Homebrew把 zli�b
安装好,并根据安装好之后的提示,将其添加到编译环境中即可。
三、使用方式
配置完毕之后,就可以在命令行中使用 Pyenv
命令了,加上 -h
参数可以查看帮助和使用方式:
$ pyenv -h
Usage: pyenv <command> [<args>]
Some useful pyenv commands are:
commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install a Python version using python-build
uninstall Uninstall a specific Python version
rehash Rehash pyenv shims (run this after installing executables)
version Show the current Python version and its origin
versions List all Python versions available to pyenv
which Display the full path to an executable
whence List all Python versions that contain the given executable
See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
在这里我们讲解一下比较常用的一些命令的使用方式。
3.1. 查看和安装Python
需要注意的一点是,Pyenv
仅能够管理由 Pyenv
自己安装的Python,也就是说如果你使用编译或其他方式安装的Python版本,将不会纳入 Pyenv
的管理。
首先,我们来查看使用 Pyenv
能安装什么版本的Python:
$ pyenv install --list
使用此命令即可查看 Pyenv
能安装的所有版本,包括官方的Python、anaconda
、pypy
等。在这里,只有数字的,如 3.6.6
这种就是官方版本的Python。
选择好你要安装的Python版本之后,使用以下命令即可安装:
$ pyenv install 3.6.6
版本名字需要和上一条命令中查询到的一致。
依赖项这些都没有问题的话,一般输入命令等待安装成功即可,安装完成后,我们可以使用以下命令来查看纳入 Pyenv
安装的有哪些版本:
$ pyenv versions
* system (set by /Users/wnanbei/.pyenv/version)
3.6.6
3.7.1
这里的 system
则是系统本身的Python环境,而下方的 3.6.6
和 3.7.1
则是使用 Pyenv
安装的,带 *
的则是当前正在使用的Python环境。
3.2. 切换Python环境
安装了多个Python版本之后,使用 Pyenv
可以非常快速便捷的在多个Python版本中切换,而不会造成冲突。其设定Python环境的方式也有几种。
-
全局Python环境
指定全局的Python环境一般用的比较少,如果你嫌每次都要用命令进入环境比较麻烦的话,那么你可以指定一个比较常用的Python版本作为全局的Python环境:
$ pyenv global 3.6.6
-
局部Python环境
除了全局环境之外,还可以给某个目录指定环境,也就是说,只要进入这个指定之后的目录,那么其所处的环境就是指定的Python版本了。
指定之前,首先要使用
cd
命令进入要指定的目录,然后输入以下命令。$ pyenv local 3.6.6
如果要取消某个目录的Python环境,可以使用以下命令:
$ pyenv local --unset
-
临时Python环境
所谓的临时Python环境,与上面的全局和局部环境不同,只是当前有效,退出Shell之后,下次再进入还需要重新切换。输入以下命令进入临时Python环境:
$ pyenv shell 3.6.6
如果需要退出临时环境的话,使用以下命令:
$ pyenv shell --unset
这三种Python环境的优先级为:shell
> local
> global