Tech Soup ~ 技术鳮汤 ;-)
期望这篇解决所有 Pyenv 核心困惑.
snip
Pyenv 是 Python 项目环境隔离/控制器
, 最基本的使用:
- 基于官方仓库安装:
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
- 然后配置到环境中:
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
- 接着就可以自由控制运行时环境了:
- 安装目标版本,比如:
pyenv install 2.4.2
- 复制一个项目环境:
pyenv virtualenv 2.4.2 242proj
- 设定当前目录以内默认使用新环境:
pyenv local 242proj
- 安装目标版本,比如:
就以上三个环节的配置, 就可以完成:
- 自由安全安装系统无关, 自用 Python 版本环境
- 根据不同项目, 自由安全绑定不同 Python 运行时
- 根据同类项目, 自由绑定含有相同 pip 模块依赖树的Python 运行时
background
为什么有 Pyenv 等等环境控制工具?
大家开始学习 Python 时, 可能最惊讶/震惊/自豪 的发现就是
- 大部分操作系统, 都内置了 Python 运行环境
- 也就是说, 不用我们专门安装, 从买到电脑那一瞬间开始
- 其实, 我们都有一个完备的可用 Python 版本环境了
因为, Python 太好用, 无论哪个系统厂商, 都有大量的内置工具/软件依赖 Python
- 所以, 也都预先安装了...
- 那么, 这也就带来一个问题:
- 系统 Python 环境, 是很多系统依赖软件需要的环境
- 这一环境, 肯定不能轻易破坏, 否则, 引发系统崩溃
- 那就等于我们自己杀死了自己的电脑...
- 这其实, 也是很多教程中涉及安装 Python 模块时
- 有的, 不负责的提示使用
sudo
命令 - 这是临时将用户权限提升到系统管理员的指令
- 造成的后果, 是一般人难以控制的
- 当然, windows 系统本身是单人系统,并没有严格区分系统和用户权限
- 所以, 在 windows 中看起来可以自由使用系统 Python 环境来开发学习
- 其实, 只是另外一种慢性自杀而已
- 有的, 不负责的提示使用
problems
由于 Python 发展太久, 中间有太多意外决策, 同时开源项目又不禁止大家的探索...
所以, 现在任何系统中的 Python 运行时环境都可以混乱不堪...
正如 xkcd: Python Environment 所描述的那样...
但是, 对于正常学习/使用者而言, 一般只想解决几个问题:
- 和系统环境隔离
- 运行 Python 时, 不触及系统自身依赖的s
- Python 版本隔离
- 想用哪个版本的 Python 不用担心干挠谁
- 项目模块依赖隔离
- 不同项目之间用 pip 安装的模块相互独立
- 可以分别自由升级/降级/删除/...
- 而不干挠各自的开发/运行
那么, 在很多年探索后, Pyenv 正好是解决以上问题的那个工具
Pyenv
正如项目名称一样:
- Python
- environment
Python 环境
~ 控制器, 控制了核心两种环境:
- Python 版本环境, 也就是说, Python 2.1/3.1 这种大版本
- Python 运行时模块依赖环境, 也就是说, 具体项目中依赖的第三方一大堆模块
那么, 如何最短手续就进入 Pyenv 的世界享受可控 Python 环境?
pyenv-installer
pyenv/pyenv-installer: This tool is used to install `pyenv` and friends.
首次安装, 建议使用官方提供的安装器
- 不用管 homebrew 哪什么其它东西, 那些和 Pyenv 并无直接关系
- 何况 brew 在中国, 还是很不受到待见的...那速度哭吧...
如何检验 pyenv 安装成功?
$ env | grep pyenv
PYENV_ROOT=/指向