Pyenv
pyenv 是针对 python 版本的管理,通过修改环境变量的方式实现;
pyenv 原理
pyenv 的美好之处在于,它并没有使用将不同的 $PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 $PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。
作者原文如下:
Understanding Shims |
具体的下载和使用教程请点击我!!!
具体的命令使用详解请点击我!!!
python切换
pyenv global 3.4.0 — 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
pyenv local 2.7.3 — 设置面向程序的本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。
pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。若找不到,就用 global 版本。
$ pyenv shell pypy-2.2.1 — 设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION
环境变量的方式。这个版本的优先级比 local 和 global 都要高。–unset 参数可以用于取消当前 shell 设定的版本。
pyenv shell –unset
python优先级
shell > local > global
virtualenv
- virtualenv 用处
处理python环境的多版本和模块依赖,以及相应的权限是一个很常见的问题。比如,你有个应用使用的是LibFoo V1.0,但另一个应用却要用到LibFoo V2.0。 如何处理呢?如果把所有模块都安装到 /usr/lib/python2.7/site-packages (或是你本机python默认的模块安装目录),那你极有可能无意中升级一些不该升级的模块。
- 在Pyenv中有相应插件:pyenv-virtualenv 或者使用virtualenvwrapper,这是 virtualenv 的扩展工具,提供了一系列命令行命令
使用pyenv来管理python,使用 pyenv-virtualenv 插件来管理多版本 python包。
关于环境变量
OS X系统的环境变量,加载顺序为:
/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
/etc/profile和/etc/paths是系统级别的,系统启动就会加载,
后面几个是当前用户级的环境变量。
~/.bash_profile,~/.bash_login,~/.profile按照从前往后的顺序读取,
如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,
如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。
~/.bashrc没有上述规则,它是bash shell打开的时候载入的。
修改完后记得source一下让其快速生效