文章列表
所有文章的完整列表,按时间倒序排列
简单的python版本管理器: pyenv
pyenv可以让你轻松的在各版本的python环境中切换自如,它是一个简单而又不引人注目并遵循UNIX传统的专用工具。
这个项目是从rbenv和ruby-buildfork而来, 并且在配合Python的情况下做了适当的修改.

pyenv能做什么?
让你在用户基础上改变全局Python版本.
支持为每一个项目设立一个Python版本.
允许您使用环境变量覆盖Python版本.
在多个python环境中搜索命令,这有助于在Python版本中进行测试 tox.
与pythonbrew和pythonz相比,pyenv不能做什么?
不依赖于Python本身。 pyenv是由纯shell脚本制作的。没有Python的引导问题。
**不需要加载到你的shell中。**相反,pyenv的shim方法的工作原理是在
$ PATH中添加一个目录。不能管理virtualenv 当然你可以自行创建virtualenv virtualenv或者使用pyenv-virtualenv去自动化构建
工作原理
在较高的层次上,pyenv使用shim拦截Python命令注入PATH的可执行文件, 确定哪个Python版本已由您的应用程序指定,并传递您的命令使用你想要的Python安装版本。
理解PATH(环境变量路径)
当你执行命令,如python或者pip, 你的操作系统会搜索目录列表以查找可执行文件的那个名字.此目录列表位于环境变量中称为PATH, 列表中的每个目录使用用冒号分隔.

PATH中的目录从左到右搜索,因此首先匹配在列表开头的目录中的可执行文件, 然后一次往右匹配。在这个例子中,首先搜索/usr/local/sbin目录,然后搜索/usr/local/bin,然后是/usr/sbin。
理解Shims(垫片)
pyenv的工作原理是在你的PATH前面插入一个shims目录,这样一来系统在搜索Python的时候第一个找到的就是pyenv管理的Python环境。这个插到最前面的路径就叫做垫片(shims)
$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
通过一个叫做为_rehashing_的进程, pyenv维护shims目录以匹配每个已安装版本的每个Python命令,比如python,pip等。
垫片是轻量级可执行文件,只是简单地传递命令到pyenv。所以只要安装了pyenv,当你运行时,比如说,pip,你的操作系统将执行以下操作:
在
PATH中搜索名为pip的可执行文件在
PATH的开头找到名为pip的pyenv垫片运行名为
pip的垫片,然后将命令传递给属于pyenv的pip命令
选择Python版本
执行shims程序时,pyenv会确定要使用的Python版本,并按此以下资源顺序读取:
PYENV_VERSION环境变量(如果指定). 你可以使用pyenv shell去设置环境变量在你当前shell session.当前特定于应用程序的
.python-version文件目录(如果有). 您可以使用pyenv local修改当前目录.python-version文件.通过搜索每个上层目录,找到第一个
.python-version文件(如果有的话),直到到达文件系统的根目录全局
$(pyenv root)/version文件. 您可以使用pyenv global修改这个文件. 如果是该全局文件不存在,pyenv假设您要使用“系统”Python。(换句话说,如果pyenv不在您的PATH中,那么任何版本都会运行.)
NOTE: 您可以同时激活多个版本,甚至包括Python2或Python3的任何版本. 这允许平行使用Python2和Python3,并且需要像tox这样的工具. 例如,要设置你的首次使用的系统Python和Python3的路径(在这个例子中设置为2.7.9和3.4.2),但也可以在你的PATH使用Python 3.3.6,3.2和2.5,首先是pyenv install缺少的版本,然后设置pyenv全局3.3.6 3.2 2.5.这时, 使用pyenv which应该能够找到每个可执行路径, 例如pyenv which python2.5(应该显示$(pyenv root/versions/2.5 /bin/python2.5) 或者pyenv which python3.4(应该显示系统Python3路径). 您还可以指定多个.python-version`文件中的版本,由换行符或任何空格分隔。



