macOS下多版本python管理


Python

macOS里面是自带python的,但是版本都相对老一点,而且直接对系统本身的python进行操作还是带有一定危险性的。pyenv 是一个强大 Python 包管理工具,可以灵活地切换各种 Python 版本,macOS 下强烈建议大家安装体验一下。

最新系统的macOS的话都是自带python2和python3的,对于python3的话可以通过brew进行安装,然后通过别名的方式去指定安装的版本,从而避免使用系统自带的python3

Pyenv

安装pyenv

brew install pyenv
  • zsh/bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile

版本安装

#查看已经安装的Python版本
pyenv versions

# 查看当前的 Python 版本
pyenv version

# 查看可安装的版本
pyenv install -l

# 安装与卸载 python 3.x.x
pyenv install 3.x.x
pyenv uninstall 3.x.x

这里如果(大概率)安装的时候比较卡,可以考虑在终端开代理或者使用proxychains

PYTHON_CONFIGURE_OPTS="--disable-ipv6" proxychains4 pyenv install <python版本>

国内加速安装python环境

v=3.8.6;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v

macos bigsur安装

  1. 设置 command-line tools
    打开Xcode.app在Preference > Locations处选择正确版本的command-line tools
  2. 安装python(设置环境变量)
    直接执行如下命令即可:
pyenv install --patch 3.7.1 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch)
  1. 安装python(未设置环境变量)
    创立一个脚本,注意这里如果不设置脚本直接复制命令执行(zsh)会莫名的报错
touch install_python.sh
chmod +x install_python.sh

在脚本里输入以下内容

#!/bin/bash

set -ex
 
CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(xcrun --show-sdk-path)/usr/lib -L/usr/local/opt/zlib/lib" \
CPPFLAGS="-I/usr/local/opt/zlib/include" \
PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig" \
pyenv install --patch 3.7.1 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch)

手工加速安装

[blog_secgxx] PYTHON_CONFIGURE_OPTS="--disable-ipv6" pyenv install 3.7.0
python-build: use [email protected] from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.0.tar.xz...
-> https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
error: failed to download Python-3.7.0.tar.xz

BUILD FAILED (OS X 11.1 using python-build 20180424)

可以看到下载包的时候失败了,实际上这个包如果我们通过浏览器下载的话其实会很快,这个时候就需要手工加速一下

# 新建cache缓存目录mkdir ~/.pyenv/cache

# 将下载好的 压缩包 移动到 cache目录下mv ~/Downloads/Python-3.7.0.tar.xz ~/.pyenv/cache

# 再次安装 就会很快 秒装了
➜ pyenv install 3.7.0
Installing Python-3.7.0...
Installed Python-3.7.0 to /Users/xxx/.pyenv/versions/Python-3.7.0

# 安装完成手动清空cache目录rm -rf ~/.pyenv/cache/*
zsh: sure you want to delete the only file in /Users/xxx/.pyenv/cache [yn]? y

# 查看是否安装成功
➜ pyenv versions
* system (set by /Users/xxx/.python-version)
  2.7.18
  3.7.0
  3.8.6
  

版本切换

pyenv 的 global、local、shell 的优先级关系是:shell > local > global

# global 全局设置 一般不建议改变全局设置
pyenv global <python版本>

# shell 会话设置 只影响当前的shell会话
pyenv shell <python版本>
# 取消 shell 会话的设置
pyenv shell --unset

# local 本地设置 只影响所在文件夹
pyenv local <python版本>

文章作者: Secgxx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Secgxx !
  目录