使用pyevn管理多个Python版本

日常开发遇到的实际问题

因为Python版本一直更新,每个项目使用的Python版本不一样,有的项目使用Python3.6,有的使用Python3.7,有的使用Python2。
如果在官网下载指定的安装包进行安装,你会发现新安装的版本总会覆盖掉之前的版本,但是旧版本又有其他的项目在使用,并不想被删除。
这时就希望有一个工具可以方便地管理多个Python版本,最好还能多个版本之间相互切换。
pyenv正好满足这个需求。

简介

Simple Python version management:pyenv (点击进入GitHub主页)

pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

安装

  • 安装方式1. 仅限Mac
    $ brew install pyenv
  • 安装方式2. 自动安装脚本
    pyenv-installer

使用

  1. 查看所有可用的版本
    $ pyenv install -l
  2. 安装指定版本
  • $ pyenv install 3.6.5
    默认会从python.org下载指定版本,速度却非常慢(除非你在墙外)。
  • 安装指定的python离线安装包
    这里,我们需要知道一点:pyenv不仅可以在线下载安装python版本,还可以从它的缓存目录~.pyenv/cache安装离线安装包。其实执行$ pyenv install 3.6.5,也是先检查缓存目录~.pyenv/cache下是否存在指定安装包,如果没有就会从网络下载。
    所以,我们可以在本地终端下载好指定版本安装包,比如:
    $ wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
    然后将其移动到.pyenv/cache 文件夹下,最后再次执行$ pyenv install 3.6.5,便可顺利安装。
  1. 创建虚拟环境
    例如:创建一个3.6.5版本的虚拟环境:$ pyenv virtualenv 3.6.5 env_***
  2. 查看所有的Python环境
    $ pyenv versions
  3. 激活指定的虚拟环境
    $ pyenv activate env_***
  4. 退出当前虚拟环境
    $ pyenv deactivate
    当然你也可以直接关掉终端。
  5. 删除虚拟环境
    $ pyenv uninstall env_***

MacOS安装过程错误排查

MacOS在安装过程中可能会出现下面的问题:

...
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

这个问题在github上已被指出:Issue #454
解决方法就是需要从命令行更新Xcode,终端运行指令xcode-select --install

WTF!可能又会提示:...the tools are already installed.
一顿搜索,找到解决方法:# How to update Xcode from command line
方法就是终端运行指令softwareupdate --install -a
运行完成后,软件更新会弹出可用更新的提示,点击现在更新
更新完成后,再次尝试安装,还是失败,提示同样的错误!!!

又是一顿搜索。。。
最后还是万能的Stack Overflow,找到了解决方法:# pyenv zlib error on MacOS:
只需要终端运行指令:
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
然后再次执行安装pyenv install 3.6.5就可以安装成功啦。

zhanglilongs-MacBook-Pro:~ zhanglilong$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Password:
installer: Package name is macOS_SDK_headers_for_macOS_10.14
installer: Installing at base path /
installer: The install was successful.
zhanglilongs-MacBook-Pro:~ zhanglilong$ pyenv install 3.6.5
python-build: use openssl from homebrew
python-build: use readline from homebrew
Installing Python-3.6.5...
python-build: use readline from homebrew
Installed Python-3.6.5 to /Users/zhanglilong/.pyenv/versions/3.6.5

zhanglilongs-MacBook-Pro:~ zhanglilong$ pyenv versions
* system (set by /Users/zhanglilong/.pyenv/version)
  3.6.5

参考文章:使用 pyenv 管理 Python 版本

你可能感兴趣的:(使用pyevn管理多个Python版本)