由于 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 | $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.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 | $ pyenv install 2.7.3 # 安装python |
Python 版本切换
1 | $ pyenv global 2.7.3 # 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。 |
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 | pyenv activate virtualenv-name |
激活后 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