pyenv in Action

最近在做 AI 相关的工作,Python 作为科学第一语言又被拾起,不过 macOS 中用的依然是 2.7,十年前曾因这个版本放弃 Python,好在现在 Python3 已经比较普及了,如今自然也不会用它。

使用 pyenv 可以安装多个python版本,并通过命令切换当前使用哪个版本。


▎安装 pyenv

1
2
3
$ xcode-select --install

$ brew install openssl readline xz

> macOS 安装 - Homebrew

在 macOS 上,更推荐使用 Homebrew 来进行安装,这样,软件本身的版本升级就变得可以解决了。而 pyenv 就只专注于 python 的版本控制。

- 安装

1
brew install pyenv

- 配置 .zshrc

1
2
3
4
5
6
# pyenv for Python
# ===================

if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi

- 更新

1
2
brew update
brew upgrade pyenv

- 删除

1
brew uninstall pyenv

> 手工安装 - git

1
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

配置 .zshrc

git 安装,还需要对下载的 pyenv 进行环境的配置。

1
2
3
4
5
6
7
8
9
# pyenv for Python
# ===================

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

删除 pyenv

卸载很简单,直接删除 ~/.pyenv 目录即可。也要去掉 .zshrc 加入的语句。


▎安装使用 Python

查看可安装的版本

1
$ pyenv install --list

安装 python3 当前最新版本 3.6.4:

1
2
3
4
5
6
7
$ pyenv install 3.7.3

python-build: use openssl from homebrew
python-build: use readline from homebrew
Installing Python-3.7.3...
python-build: use readline from homebrew
Installed Python-3.7.3 to /Users/lanvige/.pyenv/versions/3.7.3

设置为全局版本

1
2
3
$ pyenv global 3.7.3

$ python -V

全局还是用系统自带的,可以这样设置:

1
$ pyenv global system

当前目录下使用 python 3.7.3

1
$ pyenv shell 3.7.3

▎使用 pip

pip 是 Python 的包管理工具,安装完成后,就可以使用 pip 来进行包的安装了。

包的查找,可以通过这里进行: https://pypi.python.org/pypi

选择正确的 Python 版本:

1
2
3
$ python --version

# Python 3.7.3

- 更新 pip

1
$ pip install --upgrade pip

- 安装 Tensorflow

1
$ pip install tensorflow

- 升级 TensorFlow

1
$ pip install --upgrade tensorflow

该操作会自动删除旧的库的版本。


▎QA

> 国内加速

  1. pyenv 搜狐镜像源加速:http://mirrors.sohu.com/python/
  2. 下载需要的版本放到 ~/.pyenv/cache 文件夹下面
  3. 然后执行 pyenv install 版本号 安装对应的python版本
  4. 傻瓜式脚本如下,其中v表示要下载的版本号
1
v=3.6.4|wget [http://mirrors.sohu.com/python/$v/Python-$v.tar.xz](http://mirrors.sohu.com/python/$v/Python-$v.tar.xz) -P ~/.pyenv/cache/;pyenv install $v

> 安装时遇到 “zlib not available”

方法一:通过 xocde-select 来解决

1
$ xcode-select --install

方法二:HomeBrew 安装 zlib

1
2
3
4
5
6
$ brew install zlib
$ brew info zlib

# For compilers to find zlib you may need to set:
# export LDFLAGS="-L/usr/local/opt/zlib/lib"
# export CPPFLAGS="-I/usr/local/opt/zlib/include"

所以只要运行这两行 export,python 3 在编译时就可以找到 zlib 了。


▎REF::