0%

Mac 中多版本 Python 开发环境搭建

由于 Mac 上很多系统软件依赖于其自带的 python 环境,如果直接使用系统自带的 python 环境进行开发,很可能会把该环境搞乱,威胁系统安全,因此在开发的时候我们最好能在独立的环境中进行开发。另外,在 python 开发过程中,经常需要在不同版本之间切换,特别是 2.7 和 3.5,因此需要搭建一个方便 python 版本切换的开发环境。

下面详细介绍 mac 中多版本 python 开发环境的搭建方法。

安装 homebrew

在各个版本的 Linux 系统中,可以使用包管理工具来快速安装各种软件,比如 Ubuntu 的 apt-get,Debian/Kali 的 dpkg,Fedora 的 yum 等。同样,在 Mac 系统中,也有一个比较好用的包管理系统,那就是 homebrew。Mac 系统默认是没有 homebrew 的,需要通过以下命令安装:

1
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装完成后就可以通过 brew intall pakage-name 命令来安装各种软件了。在这篇博客中主要用来安装下面的 pyenv 和 pyenv-virtualenv。

安装 pyenv

Mac 系统一般自带有 python 2.7,为了方便 python 版本切换,我们可以通过 pyenv 这个软件来进行快速管理。pyenv 可以管理 python2, python3 以及 annaconda, miniconda 在内的各种 python 发行版本,所有版本文件都存放在 ~/.pyenv/versions 文件夹里面。

首先利用下面命令安装 pyenv:

1
$ brew install pyenv

然后通过以下两条命令把环境变量写入 ~/.bash_profile 中:

1
2
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

接下来通过把 pyenv init 写入 shell 来开启 shims 和自动补齐功能:

1
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

这个时候就可以通过 pyenv 来管理 python 版本了,下面简单介绍 pyenv 的几条常用命令。

查看本机安装的 python 版本

1
$ pyenv versions

星号表示当前正在使用的 Python 版本。使用 python -V 确认版本。

查看可安装的 python 版本

1
pyenv install -l

Python 安装与卸载

1
2
$ pyenv install 2.7.3   # 安装python
$ pyenv uninstall 2.7.3 # 卸载python

Python 版本切换

1
2
3
4
5
$ pyenv global 2.7.3  # 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
$ pyenv local 2.7.3 # 设置 Python 本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。
$ pyenv shell 2.7.3 # 设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。
$ pyenv shell --unset # 取消当前 shell 设定的版本。
$ pyenv rehash # 创建垫片路径(为所有已安装的可执行文件创建 shims,如:~/.pyenv/versions/*/bin/*,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)

python 的使用优先级为 shell > local > global。

安装 pyenv-virtualenv

pyenv-virtual 是用来管理虚拟环境的。这里我们需要认真区分版本管理和环境管理的区别,版本管理用于管理 python 的不同发行版本,而环境管理用于为不同项目定制开发环境。在 pyenv 中,环境是从版本中派生出来的,可以继承所属版本的第三方包,也可以为特定项目定制第三方包,而又不至于影响原始的 python 版本。对于 pyenv 来说,虚拟环境和版本一样,也存放在 ~/.pyenv/versions 文件夹中,其管理跟版本管理类似,可以使用 uninstall, global, local 等命令。

我们同样使用 homebrew 来安装 pyenv-virtualenv:

1
brew install pyenv-virtualenv

之后,我们就可以通过以下命令来创建虚拟环境了:

1
pyenv virtualenv <python-version> <virtualenv-name>

其中,python-version 是虚拟环境的版本类型,virtualenv-name 为该虚拟环境的名字,可以自己任取。

接下来就可以通过下面命令激活和关闭虚拟环境了:

1
2
pyenv activate virtualenv-name
pyenv deactivate

激活后 shell 的最前端会出现,(virtualenv-name),代表已经进入虚拟环境。

如果我们想每次进入某个项目便自动激活特定虚拟环境,可以通过 local 命令来设置:

1
pyenv local virtualenv-name

安装 pip

pip 是 python 的包安装工具,安装 pip 后,所有的 python 包都可以通过 pip isntall pkg 进行安装。首先通过下面命令获取 pip 安装脚本:

1
$ wget https://bootstrap.pypa.io/get-pip.py

wget 是一个好用的文件下载工具,下载的文件放在当前文件夹中。如果还没有安装 wget,也可以通过 homebrew 进行安装。

接下来就可以用 python 执行该安装脚本了:

1
sudo python get-pip.py

需要注意的是,由于我们使用了 pyenv 来管理 python 版本,每次使用 pip 都是把相应的包安装到当前系统使用的 python 版本中。如果我们在虚拟环境中,那么相应的包便安装到相应的虚拟环境中了。

Python 开发常用软件

在 python 开发过程中,使用一些软件能大大加快开发进程,这些软件都可以通过 pip 进行安装。

  • ipython

有用链接

本文标题:Mac 中多版本 Python 开发环境搭建

文章作者:Zhikun Zhang

发布时间:2017年10月19日 - 15:14:48

最后更新:2020年05月16日 - 01:47:41

原始链接:http://zhangzhk.com/2017/10/19/build-python-development-environment-in-mac/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。