由于blog各种垃圾评论太多,而且本人审核评论周期较长,所以懒得管理评论了,就把评论功能关闭,有问题可以直接qq骚扰我

pyenv环境配置

自动化 西门飞冰 3321℃
[隐藏]

操作系统环境: Centos7.1 64位

1.Pyenv介绍

Pyenv用于同时管理多个python版本,它可为每个工作目录设定使用指定的python版本,例如切换到$HOME/first_project,其使用的python版本为2.7.9;而切换进入$HOME/second_project,其使用的python版本可自动变换为3.4.3。

Pyenv的git仓库:

https://github.com/yyuu/pyenv

2.pyenv环境安装

(1)安装git

yum install git

(2)pyenv命令在安装python时,是通过下载源代码后于本地编译进行,因此,需要本地部署好开发环境,并为其部署相关依赖到的程序包,如readline、readline-devel、openssl-devel、sqlite-devel和bzip2-devel等

yum groupinstall  "Development Tools"
yum install readline readline-devel openssl-devel sqlite-devel bzip2-devel

(2)clone pyenv代码到用户家目录

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

(3)为pyenv提供环境配置

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

(4)重启shell进程,以使得新配置生效

exec $SHELL

(5)验证pyenv环境的安装:手动执行一个pyenv命令,如果可以正常执行就认为pyenv安装没有问题

[root@Python ~]# pyenv --version
pyenv 20160202-10-ga6f1f48

3.Pyenv使用

Pyenv有许多子命令,用于管理python环境。不带任何参数的pyenv命令可用于查看这些命令的列表及简单使用说明。如果想查看某命令的详细帮助信息,可使用类似如下格式的命令获取。

pyenv help <command>

查看可安装的python版本列表:

pyenv install --list

安装python3.4.2

[root@Python ~]# pyenv install 3.4.2
Downloading Python-3.4.2.tgz...
-> https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
Installing Python-3.4.2...
patching file ./Lib/ssl.py
patching file ./Modules/_ssl.c
Installed Python-3.4.2 to /root/.pyenv/versions/3.4.2

安装完成之后需要在安装一个python2.7.9的版本,用于后面的环境配置

每次安装新版本后,建议使用rehash命令重新hash其可用的python清单

pyenv rehash

在一次查看可用的python版本列表,其中前面的*表示当前工作目录正在使用的版本,其中system表示系统自带的python版本

[root@Python ~]# pyenv versions
* system (set by /root/.pyenv/version)
  2.7.9
  3.4.2

4.基于pyenv设定工作目录使用的python版本

Pyenv的global子命令可以查看及设定全局版本,而local子命令则用于设定及查看当前工作目录的本地版本,ersion子命令可用于查看当前正在使用的版本。

[root@Python ~]# pyenv global
system
[root@Python ~]# pyenv version
system (set by /root/.pyenv/version)

假设这里有两个项目,路径分别为/root/firsh_project和/root/second_project,其中前一个使用python2.7.9,而后一个使用python3.4.2

创建两个项目的工作目录

mkdir /root/firsh_project /root/second_project

切换至第一个项目的目录,设定其使用python版本为2.7.9

[root@Python ~]# cd /root/firsh_project/
[root@Python firsh_project]# pyenv local         #查看当前设定版本,这里显示没有设置
pyenv: no local version configured for this directory
[root@Python firsh_project]# pyenv local 2.7.9   #设置当前版本为2.7.9
[root@Python firsh_project]# pyenv local         #查看当前版本已经设置为2.7.9
2.7.9
[root@Python firsh_project]# python -V
Python 2.7.9

切换到第二个目录,设定其使用python版本为3.4.2

[root@Python ~]# cd second_project/
[root@Python second_project]# pyenv local
pyenv: no local version configured for this directory
[root@Python second_project]# pyenv local 3.4.2
[root@Python second_project]# pyenv local
3.4.2
[root@Python second_project]# python -V
Python 3.4.2

设定完成后,切换至此两个项目中的任何一个的目录,其依然会保持设定的版本。如果取消设定的版本,使用“pyenv local –unset”即可。

补充:最好不要使用pyenv global命令,因为此命令是设置全局的python版本,对所有目录生效(后果的话试试就知道了)

5.Pyenv的pyenv-virtualenv插件

pyenv irtualenv是pyenv的插件,为Unix系统上的python irtualenvs提供pyenv irtualenv命令。它可以为pyenv管理的python版本运行提供隔离的虚拟环境,在此虚拟环境下的操作例如安装第三方模块以及修改库搜索路径等,都不会在原始的python环境里直接操作,从而保证了各python版本本身的纯净。

第一步:安装pyenv-virtualenv插件

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

pyenv-virtualenv会为pyenv引入一些新命令,例如virtualenv/virtualenv-delete用户创建/删除虚拟环境,virtualenvs用于列出所有的虚拟环境,activate和deactivate用于激活/禁用已有虚拟环境,用于获取使用帮助:

[root@Python ~]# pyenv help virtualenv
Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] &lt;virtualenv-name&gt;
pyenv virtualenv --version
pyenv virtualenv --help

-f/--force       Install even if the version appears to be installed already

第二步:使用pyenv-virtualenv建立虚拟python环境

以/root/virtual_env目录为例,创建一个虚拟的python环境

mkdir /root/virtual_env

创建一个名为myenv的虚拟python环境,其使用“3.4.2的版本”。

[root@Python virtual_env]# pyenv virtualenv 3.4.2 myenv
Ignoring indexes: https://pypi.python.org/simple/
Requirement already satisfied (use --upgrade to upgrade): setuptools in /root/.pyenv/versions/3.4.2/envs/myenv/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /root/.pyenv/versions/3.4.2/envs/myenv/lib/python3.4/site-packages

Cleaning up...

查看可用python版本列表

[root@Python virtual_env]# pyenv versions
* system (set by /root/.pyenv/version)
2.7.9
3.4.2
3.4.2/envs/myenv
myenv

仅查看python的虚拟环境

[root@Python virtual_env]# pyenv virtualenvs
3.4.2/envs/myenv (created from /root/.pyenv/versions/3.4.2)
myenv (created from /root/.pyenv/versions/3.4.2)

在当前工作目录激活虚拟环境myenv

[root@Python virtual_env]# pyenv activate myenv
(myenv) [root@Python virtual_env]# python --version
Python 3.4.2

查看可用pip及其版本

(myenv) [root@Python virtual_env]# pip -V
pip 1.5.6 from /root/.pyenv/versions/3.4.2/envs/myenv/lib/python3.4/site-packages (python 3.4)

为当前虚拟环境使用pip命令安装一个第三方模块,例如pymysql和ipython

pip install pymysql
pip install ipython

运行ipython,并尝试导入pymysql模块,如果能导入成功,则表示模块已然就绪;

(myenv) [root@Python virtual_env]# ipython
Python 3.4.2 (default, Nov 23 2015, 13:14:16) 
Type "copyright", "credits" or "license" for more information.
	
IPython 4.1.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import pymysql

In [2]:

另一个终端,切换至之前步骤中使用pyenv设定其使用3.4.2版本python的项目目录,firsh_project中,尝试运行ipython命令会失败。这说明此前虚拟环境myenv中的操作对其原始版本没有产生影响,是与之隔离的。

[root@Python firsh_project]# ipython
pyenv: ipython: command not found

The `ipython' command exists in these Python versions:
  3.4.2/envs/myenv
  myenv

 

 

 

转载请注明:西门飞冰的博客-专注于Linux运维 » pyenv环境配置

喜欢 (1)or分享 (0)