macOS 使用 pyenv 和 virtualenv 搭建 python 工作环境
人生苦短,我在 Mac 上用 python。
介绍
macOS 自带 python2.7,但是为了更好地进行 python 的开发,最好是安装 python3 进行适配。然而,有时候我们需要在不同的项目中使用不同版本的 python,如果直接采用官网的 pkg 文件安装的话不免会产生冲突,而且也没有办法管理。为此,本文通过使用 Homebrew 和相应的工具包来搭建 python 工作环境。
注:对于 Linux 平台,同样也可以使用 pyenv 和 virtualenv 对不同版本的 python 和不同的开发环境进行管理,命令基本相同,只是在安装 pyenv 的时候就没办法使用 Homebrew 了,可以使用 Linux 平台上的 apt-get 等包管理工具进行安装。
准备工作
- 安装 Homebrew
- 了解如何使用 Terminal
使用 pyenv 安装、管理多版本 python
pyenv 提供了一个安装、管理多个版本的 python 的工具,可以用类似于 Homebrew 安装包的语句来安装、管理不同版本的 python。
安装 pyenv
安装好 Homebrew 以后,执行brew install pyenv
即可完成 pyenv 的安装。
若要卸载 pyenv,执行brew uninstall pyenv
即可
安装完成后,还需要在 .bash_profile 中增加以下内容:
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
fi
这段代码的作用主要是指明 pyenv 的位置, 以便以后可以直接在命令行里面运行 pyenv 命令。 保存在 ~/.bash_profile 文件中是为了每次用户登陆后自动生效。
安装、卸载 python
完成 pyenv 的安装后,执行pyenv install (python-version)
即可安装对应版本号的 python。可通过命令pyenv install --list
查看所有可安装的 python 版本,然后替换前面的(python-version)
即可。
安装完毕后,执行pyenv version
查看当前 python 版本。pyenv versions
查看已安装的 python 版本,前面有星号的表示当前 python 版本
安装好的 python 实际路径为~/.pyenv/versions
切换 python 版本
使用pyenv global (python-version)
切换全局 python 版本,pyenv global system
切换回系统自带 python,pyenv local (python-version)
切换当前目录的 python 版本。
使用 pyenv-virtualenv 创建、管理多个不同的 python 工作区
有时候我们需要在不同的项目工程中使用不同版本的 python,virtualenv 就是一个能够创建隔离的 python 环境的工具,这本来是一个 python 包,本节将介绍一个基于 pyenv 的插件:pyenv-virtualenv。下一节介绍如何单独使用 virtualenv 管理工作区。
安装 pyenv-virtualenv
使用 Homebrew 安装:brew install pyenv-virtualenv
创建隔离的工作环境
创建工作环境:pyenv virtualenv (python-version) (workspace-name)
。
上面这句命令使用给定的python版本创建了一个名为workspace-name的工作环境,目录的实际路径为~/.pyenv/versions/(python-version)/envs
,同时会在~/.pyenv/versions
中创建一个对应的软链接,指向相应的目录。
切换不同的工作环境
激活环境:pyenv activate (workspace-name)
退出环境:pyenv deactivate
在这个隔离的虚拟环境中,可以使用 pip 安装需要的包,而不会影响到其他的 python 版本。但是可能会在 home directory 下创建一些隐藏目录(如 keras、matplotlib、jupyter 等)。
删除工作环境
只需要把工作环境的目录删除掉就可以删除对应的工作环境了
顺带一提的是,使用 PyCharm 等 IDE 的时候,会自动检测出项目是否使用了 virtualenv ,因此直接在 IDE 中运行代码即可,不需要激活虚拟环境。
单独使用 virtualenv 管理工作区
virtualenv 原本是一个可以通过 pip 安装的 python 包,上面的 pyenv-virtualenv 是以插件的形式,配合 pyenv 进行使用的。如果已经用其他的方法安装了 python,如官网 pkg、Homebrew 等,还可以单独使用 virtualenv 进行管理。效果与前面完全相同,只是使用的命令有所改变。
安装 virtualenv
使用 pip 安装:pip install virtualenv
创建隔离的工作环境
创建工作环境:virtualenv (python-path) (workspace-directory) --option
上述命令中,需要指定工作环境使用 python 的 python 解释器路径,然后会复制一份到工作环境中,并且还需要指定工作环境的实际路径;option 选项则可以指定是否将原来的包一并复制过去,如果使用--no-site-packages
则不复制,pyenv global (python-version)
仅复制系统系统包,默认是复制的。
切换工作环境
首先 cd 到 workspace-directory。
激活环境:source bin/activate
退出环境:deactivate
激活后就可以在隔离的工作环境中使用 pip 安装需要的包了。
删除隔离的工作环境
同样是删除 workspace-directory 即可删除工作环境。
总结
说了这么多,使用这种办法来安装和管理无非是为了能够更好地掌控安装过程,并且安装、卸载也非常干净简洁。在搭建好 python 工作环境以后,马上开始着手干活才是最重要的,不能为了使用工具而使用工具,这样就本末倒置了。
本文为原创文章,转载请注明。