macOS下多版本python管理

Python

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

因为几乎没有用到系统自带的python因此就不再这里误导大家了,下面主要介绍一下pyenv

Pyenv

安装pyenv

  • zsh/bash

bash

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

版本安装

bash


pyenv versions


pyenv version


pyenv install -l


pyenv install 3.x.x
pyenv uninstall 3.x.x

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

bash

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

国内加速安装python环境

bash

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(设置环境变量)
    直接执行如下命令即可:

bash

pyenv install --patch 3.7.1 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch)
  1. 安装python(未设置环境变量)
    创立一个脚本,注意这里如果不设置脚本直接复制命令执行(zsh)会莫名的报错

bash

touch install_python.sh
chmod +x install_python.sh

在脚本里输入以下内容

bash

#!/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)

手工加速安装

bash

[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)

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

bash

mkdir ~/.pyenv/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


➜ 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

bash


pyenv global <python版本>


pyenv shell <python版本>

pyenv shell --unset


pyenv local <python版本>

pip

pip安装

python2在官网下载脚本安装即可https://bootstrap.pypa.io/pip/ ,python3.6以后自带pip

pip加速

国内直接使用pip安装包的话速度会很慢,因此我们需要将pip的源指向国内的加速源
在根目录下新建目录.pip并创建文件pip.conf

bash

mkdir .pip
touch pip.conf
vim pip.conf

pip.conf中输入以下内容

bash

[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn

pipenv

在使用pipenv之前,必须彻底的忘记pip这个东西

bash


pip3 install pipenv    

mkdir project && cd project

pipenv --three 

vim project/Pipfile




pipenv shell 

pipenv install django==1.11 

当项目放到阿里云上时,直接运行:pipenv install 就能自动生成一份和本地环境,一模一样的环境

常用命令:

bash

   pipenv graph                  
   pipenv uninstall --all        
   pipenv uninstall django==1.11 
   pipenv update requests        
   pipenv update                 
   pipenv shell                  
   exit                          
   pipenv --rm                   
© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享