Python发展至今,版本众多,在使用过程中经常遇到第三方库依赖的Python版本和系统Python版本不一致的情况。同时又因系统底层需调用当前版本Python,所以不能随意变更当前系统Python版本。如此情境下就会有Python多版本共存的情况。于是,Python多环境管理工具应运而生。Pyenv和Virtualenv均为Python管理工具,不同的是,Pyenv是对python的版本进行管理,实现不同版本之间的切换和使用;而Virtualenv则通过创建虚拟环境,实现与系统环境以及其他python环境的隔离,避免相互干扰。

1、Pyenv的部署和使用

Pyenv是一个简单的python版本管理工具,以前叫做Pythonbrew。它让你能够方便地切换全局python版本,安装多个不同的python版本,设置独立的某个文件夹或者工程目录特异的python版本,同时创建python虚拟环境(virtualenv's)。所有这些操作均可以在类Unix系统的机器上(Linux和OS X)不需要依赖python本身执行,而且它工作在用户层,不需要任何sudo操作。

(1)部署

pyenv作为python的版本管理工具,通过改变shell的环境变量来切换不同的python版本,以达到多版本共存的目的。该工具不支持windows系统。具体工作原理如下:

接下来开始部署pyenv

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

# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc

# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

# echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

# exec "$SHELL"

若只有系统一个python版本,执行pyenv versions会显示:

若系统里有多个python版本,执行pyenv versions会显示:

实践操作:

system显示的是2.7.5版本,要再切回来的话执行:pyenv global system 而不是pyenv global 2.7.5

2、Virtualenv的部署与使用

virtual是底层基于python开发的python环境隔离工具,其通过虚拟目录的方式来实现多环境并存。工作原理如下:在你所需要的地方创建工作目录,该目录类似系统安装的python目录,保留完整的python环境、解释器、标准库和第三方库等,当我们需要的时候,切换环境变量激活即可使用。

安装pip:

yum -y install python-pip python-devel

实践操作:

[root@localhost ~]# virtualenv /data/datafile/software/virtualpy  # 创建虚拟工作目录

New python executable in /data/datafile/software/virtualpy/bin/python2

Also creating executable in /data/datafile/software/virtualpy/bin/python

Installing setuptools, pip, wheel...done.

[root@localhost ~]# source /data/datafile/software/virtualpy/bin/activate  # 切换并激活虚拟工作环境

(virtualpy) [root@localhost ~]# deactivate   # 退出虚拟工作目录

[root@localhost ~]#

最新文章

  1. css实现垂直居中的方法
  2. STL整理
  3. arm-linux-objdump
  4. Read / Write Excel file in Java using Apache POI
  5. 2、分布式文件系统---HDFS
  6. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
  7. Android获取设备採用的时间制式(12小时制式或24小时制式)
  8. <3>Centos系统完整安装python流程
  9. sql server 关于日期格式转换查询备注
  10. Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool
  11. redis的list取出数据方式速度测试
  12. VUE iview date-picker取时间范围...
  13. group by 用法解析
  14. 序列化还是JSON存储对象?
  15. Android SDK manager里面什么是必须下载的?
  16. XAMPP与本地Mysql冲突解决方法
  17. C# 自己动手实现Spy++(一)
  18. 转:sqlserver 临时表、表变量、CTE的比较
  19. Html Agility Pack - API
  20. eclipse使用maven打包时去掉测试类

热门文章

  1. python 操作jenkins 常用api
  2. MySQL导入到SQLServer
  3. 如何让 Laravel API 永远返回 JSON 格式响应?
  4. maven引入jsp相关依赖
  5. anaconda jupyter
  6. 关于ajax异步请求不到数据的问题 302跨域请求
  7. MySQL主要命令(2)
  8. web.xml 中context-param元素
  9. Android ViewGroup拦截触摸事件具体解释
  10. Windows平台编译openssl-0.9.8k库(32位、64位)