背景

如果是Ubuntu等桌面系统,都已经更新到了Python较新的版本。但多数生产环境使用的还是红帽系统。

CentOS7默认还是Python2.7,而开发环境如果是高版本Python就带来了问题。

为了不破坏当前系统使用,甚至以后为了多个Python项目部署(这些项目使用不同Python解释器版本),建议使用多版本工具。也可以考虑容器部署Python应用程序。

pyenv简介

简单的说,pyenv是管理python版本的工具。安装pyenv后,可以管理各种python版本,并且各个版本的环境完全独立,互不干扰。

官网https://github.com/pyenv/pyenv

快捷安装https://github.com/pyenv/pyenv#the-automatic-installer

  1. #!/usr/bin/env bash
  2. set -e
  3. [ -n "$PYENV_DEBUG" ] && set -x
  4. if [ -z "$PYENV_ROOT" ]; then
  5. PYENV_ROOT="${HOME}/.pyenv"
  6. fi
  7. colorize() {
  8. if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
  9. else echo -n "$2"
  10. fi
  11. }
  12. # Checks for `.pyenv` file, and suggests to remove it for installing
  13. if [ -d "${PYENV_ROOT}" ]; then
  14. { echo
  15. colorize 1 "WARNING"
  16. echo ": Can not proceed with installation. Kindly remove the '${PYENV_ROOT}' directory first."
  17. echo
  18. } >&2
  19. exit 1
  20. fi
  21. shell="$1"
  22. if [ -z "$shell" ]; then
  23. shell="$(ps c -p "$PPID" -o 'ucomm=' 2>/dev/null || true)"
  24. shell="${shell##-}"
  25. shell="${shell%% *}"
  26. shell="$(basename "${shell:-$SHELL}")"
  27. fi
  28. failed_checkout() {
  29. echo "Failed to git clone $1"
  30. exit -1
  31. }
  32. checkout() {
  33. [ -d "$2" ] || git clone --depth 1 "$1" "$2" || failed_checkout "$1"
  34. }
  35. if ! command -v git 1>/dev/null 2>&1; then
  36. echo "pyenv: Git is not installed, can't continue." >&2
  37. exit 1
  38. fi
  39. if [ -n "${USE_GIT_URI}" ]; then
  40. GITHUB="git://github.com"
  41. else
  42. GITHUB="https://github.com"
  43. fi
  44. checkout "${GITHUB}/pyenv/pyenv.git" "${PYENV_ROOT}"
  45. checkout "${GITHUB}/pyenv/pyenv-doctor.git" "${PYENV_ROOT}/plugins/pyenv-doctor"
  46. checkout "${GITHUB}/pyenv/pyenv-installer.git" "${PYENV_ROOT}/plugins/pyenv-installer"
  47. checkout "${GITHUB}/pyenv/pyenv-update.git" "${PYENV_ROOT}/plugins/pyenv-update"
  48. checkout "${GITHUB}/pyenv/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"
  49. checkout "${GITHUB}/pyenv/pyenv-which-ext.git" "${PYENV_ROOT}/plugins/pyenv-which-ext"
  50. if ! command -v pyenv 1>/dev/null; then
  51. { echo
  52. colorize 1 "WARNING"
  53. echo ": seems you still have not added 'pyenv' to the load path."
  54. echo
  55. } >&2
  56. case "$shell" in
  57. bash )
  58. profile="~/.bashrc"
  59. ;;
  60. zsh )
  61. profile="~/.zshrc"
  62. ;;
  63. ksh )
  64. profile="~/.profile"
  65. ;;
  66. fish )
  67. profile="~/.config/fish/config.fish"
  68. ;;
  69. * )
  70. profile="your profile"
  71. ;;
  72. esac
  73. { echo "# Load pyenv automatically by adding"
  74. echo "# the following to ${profile}:"
  75. echo
  76. case "$shell" in
  77. fish )
  78. echo "set -x PATH \"${PYENV_ROOT}/bin\" \$PATH"
  79. echo 'status --is-interactive; and . (pyenv init -|psub)'
  80. echo 'status --is-interactive; and . (pyenv virtualenv-init -|psub)'
  81. ;;
  82. * )
  83. echo "export PATH=\"${PYENV_ROOT}/bin:\$PATH\""
  84. echo "eval \"\$(pyenv init -)\""
  85. echo "eval \"\$(pyenv virtualenv-init -)\""
  86. ;;
  87. esac
  88. } >&2
  89. fi

使用pyenv实现python多版本共存的更多相关文章

  1. [转]Windows下Python多版本共存

    https://blog.csdn.net/dream_an/article/details/51248736 Windows下Python多版本共存 Python数据科学安装Numby,pandas ...

  2. windows配置Python多版本共存

    windows配置Python多版本共存 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近Python开发蛮火的,三年前我的一个运维朋友就告诉我说Python语言将来会很火,当时 ...

  3. Ancoda 下的python多版本共存

    Ancoda 下的python多版本共存 virtualenv python 多版本共存 Pip, Virtualenv 和Fabric 被称为python 的三大神器,Pip 是包管理工具,Virt ...

  4. Windows下Python多版本共存

    Windows下Python多版本共存 Python数据科学安装Numby,pandas,scipy,matpotlib等(IPython安装pandas) 0.0 因为公司项目,需要Python两个 ...

  5. Python多版本共存安装

    Python的安装 进入Python官方网站:www.python.org下载系统对应的Python版本 按照提示步奏安装,安装路径选择自定义,方便查找 安装完成后,按win+R键,输入cmd进入cm ...

  6. Python多版本共存之pyenv

    经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...

  7. Python多版本共存管理工具之pyenv

    目录 Table of Contents 1. 安装pyenv 2. 安装Python 3.0 使用python 参考 Table of Contents 经常遇到这样的情况: 系统自带的Python ...

  8. Python 多版本共存之pyenv

    经常遇到这样的情况: 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性: 系统自带的 Python 是 2.x,自己需要 Python 3.x: 此时需要在系统中安装 ...

  9. Python - 多版本共存与虚拟独立环境

    背景 利用pip直接在本地python环境安装包,基本上都安装到了site_package目录下面. 随着安装的包越来越多,依赖关系也就越来越复杂.不同的项目之间,依赖关系也会出现版本冲突的问题. 此 ...

随机推荐

  1. [LeetCode]面试题53 - I. 在排序数组中查找数字 I(二分);面试题53 - II. 0~n-1中缺失的数字(二分)

    ##面试题53 - I. 在排序数组中查找数字 I ###题目 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 ...

  2. 再学ajax--第二天 | 基于php+mysql+ajax的表单注册、登录、注销

    写在前面 ajax学习到了第二天,这次是用第一天封装的ajax函数,后端使用了php+mysql实现基本的注册,登录,注销. php是我前几个月get到的技能,我已经学习到了面向对象,知道各修饰符的含 ...

  3. python库的基本情况

    主要三个库 time()函数获取浮点数 ctime()函数可以获取时间,还可以以一种可读的方式表示时间 gmtime()函数

  4. 灵活使用 SQLAlchemy 中的 ORM 查询

    之前做查询一直觉得直接拼 SQL 比较方便,用了 SQLAlchemy 的 ORM 查询之后,发现也还可以,还提高了可读性. 这篇文章主要说说 SQLAlchemy 常用的 ORM 查询方式,偏实践. ...

  5. python爬取链家二手房信息,确认过眼神我是买不起的人

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  6. Flutter继承环信IM-发送视频时失败:No value for fileLength

    首先贴一下代码: 这是发送视频消息的方法 报出一下错误信息: 这是由于在解析的时候JSON里面没有fileLength这个值 往回看发送视频消息api,也并不需要fileLength参数 那顺着错误信 ...

  7. xxe漏洞,及xml

    xxe漏洞 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文档类型定义(可选).文 ...

  8. 一台电脑配置多个GigHub账号

    换了新的公司,原来的公司用SVN(比较老了),自己平时用码云(Gitee),新公司使用GitHub.前天通知我注册GitHub账号,但是并未通知用户名的事情(要求用自己的名字),原来的GitHub账号 ...

  9. 对之前IoT项目的完善

    博文有点长,因为是两个大项目(四个小项目)放一起了,不过都很适合新手小白(有源程序的情况),也可以再接 OLED 屏,就是前几篇博客的操作 一.esp8266 读取 DHT11 数据并通过微信小程序发 ...

  10. Java并发编程之ReentrantLock源码分析

    ReentrantLock介绍 从JDK1.5之前,我们都是使用synchronized关键字来对代码块加锁,在JDK1.5引入了ReentrantLock锁.synchronized关键字性能比Re ...