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

 

posted @ 2020-04-22 23:36  热爱技术的小牛  阅读(301)  评论(0编辑  收藏  举报
热爱技术的小牛