Pyenv教程
初识pyenv: 它是一个简单的Python版本管理工具。前身为Pythonbrew,pyenv允许你改变全局的python版本,安装多种不同的python版本,设置应用指定的python版本以及创建/管理虚拟的python环境(”virtualenv’s”)。所有这些都在*NIX的机器上完成(Linux和OS X),它工作在用户空间,因而不需要sudo命令。
安装
按照安装指引或者使用自动安装工具即可。如果你使用Mac,我强烈推荐你用Homebrew来安装pyenv。如果你选择哪种方式,当你从仓库中下载完成之后,别忘了在你的.bashrc文件(Mac中是.bash_profile)中添加一些指令,以便于pyenv可以自动执行相关功能。
Ubuntu中安装方法
在Ubuntu 12.04工作站上,使用.bashrc来替代.bash_profile文件:
cd
git clone git://github.com/yyuu/pyenv.git .pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
Pyenv安装工具
这是由自动安装工具提供的单行命令:
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
实际演练
~$ pyenv global
system
~$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
通常情况下你只会在系统中安装一种版本的python,这正是上面显示的那样。Pyenv允许你去扩展这些版本。我们来看下安装一个新版本的python,比如说现在安装python最新的版本:
~$ pyenv install 3.4.0
Installing readline-6.3...
Installed readline-6.3 to /home/staff/jmoreira/.pyenv/versions/3.4.0
Installing Python-3.4.0...
Installed Python-3.4.0 to /home/staff/jmoreira/.pyenv/versions/3.4.0
(通过这种方式,没有必要去记忆住这些。Pyenv install –list会显示所有可用的python版本)。
~$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
3.4.0
Pyenv现在列举出两种Python版本。为了使用python 3.4作为全局变量,使用如下命令:
pyenv global 3.4.0
你也可以使用pyenv为应用或者本地环境指定python版本:
~$ pyenv global system
~$ mkdir cuting_edge
~$ cd cuting_edge/
~/cutting_edge$ pyenv local 3.4.0
~/cutting_edge$ python -V
Python 3.4.0
~/cutting_edge$ cd ..
~$ python -V
Python 2.7.6
虚拟环境
对于其他的虚拟环境的使用者来说,使用本地python环境的想法也是相似的。实际上,pyenv中一个创建好的本地python几乎与python虚拟环境相同。主要的不同之处在于每次创建一个新的pyenv版本时,pyenv实际上是拷贝整个python环境。而virtualenv与此相反,它是使用符号链接来减少virtualenv的规模。如果你担心没了python虚拟环境的话,有一个插件可以解决——pyenv-virtualenv。这个插件为pyenv添加了完整的虚拟环境的功能:
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
source ~/.bashrc
~$ mkdir virtual_env
~$ cd virtual_env/
~/virtual_env$ pyenv virtualenv 3.4.0 venv
Ignoring indexes: https://pypi.python.org/simple/
Requirement already satisfied (use --upgrade to upgrade): setuptools in /home/staff/jmoreira/.pyenv/versions/venv/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /home/staff/jmoreira/.pyenv/versions/venv/lib/python3.4/site-packages
Cleaning up...
~/virtual_env$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
3.4.0
lab_web
venv
这里我使用Python 3.4来创建一个虚拟环境(如果你想创建一个跟系统的python版本相同的虚拟环境,那么virtualenv应该安装在系统空间中)。
~/virtual_env$ pyenv activate venv
(venv) ~/virtual_env$ python -V
Python 3.4.0
(venv) ~/virtual_env$ pip list
pip (1.5.4)
setuptools (2.1)
(venv) ~/virtual_env$ pyenv deactivate
~/virtual_env
最后一条命令是让虚拟环境失效的推荐方式,这样能确保你在离开虚拟环境之后pyenv依然能正常工作。
Pyenv的神奇之处在于它实际上重新定义了你的python命令:
~$ which python
/home/staff/jmoreira/.pyenv/shims/python
当你试图去运行Python时,它会在当前目录中查找一个.python-version文件去决定使用哪个版本的python。如果不存在这个文件,它会自动去寻找用户空间的~/.pyenv/version文件。
关于Pyenv基本内容就这些。你可以用它在一个安全,环境友好的空间里尽情地编写python代码了。
特别感谢Adam Pah为本文提供的建议和意见。
英文原文:https://amaral.northwestern.edu/resources/guides/pyenv-tutorial
译者:hahakk
本文来自博客园,作者:热爱技术的小牛,转载请注明原文链接:https://www.cnblogs.com/my-blogs-for-everone/articles/12757784.html