如何使用 Pyenv 在 Linux 实现 Python的完美版本控制

osc_ytmgp8ea 2020-11-14 11:36:15
CentOS pip Bash


操作系统准备

准备Linux最小系统即可。
如果在虚拟机中克隆,MAC地址会变。
这里使用CentOS 6.5+

安装

1,首先安全git

yum install git -y

2,安装Python环境依赖

yum -y install git gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel

3,创建python用户

useradd python

4、使用python用户登录后安装Pyenv

$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

下载的 pyenv-installer 是一个shell脚本。注意:

  1. https://github.com/pyenv/pyenv-installer 有安装文档
  2. 如果curl出现 curl: (35) SSL connect error ,是nss版本低的问题,更新它。 可能需要配置一个有较新包的yum源,如下在/etc/yum.repo/ 新增一个源,然后更新
    [updates]
    name=CentOS-Updates
    baseurl=https://mirrors.aliyun.com/centos/6.9/os/x86_64
    gpgcheck=0
    然后更新nss
    yum update nss





5、在python用户的~/.bash_profile中追加

如何使用 Pyenv 在 Linux 实现 Python的完美版本控制

export PATH="/home/python/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

$ source ~/.bash_profile

这样当用户启动的时候,会执行用户的.bash_profile中的脚本,就会启动pyenv。 安装好的pyenv 就在~/.pyenv中

Pyenv的使用

python 版本及path路径

$ python --version
$ python -V
$ echo $PATH

可以看到当前系统Python路径

pyenv 命令

如何使用 Pyenv 在 Linux 实现 Python的完美版本控制

$ pyenv help install 
列出所有可用版本 

在线安装python3.5.3版本

$ pyenv versions 这样的安装可能较慢,为了提速,可是选用cache方法。
把手动下载下来的安装包放 在~/.pyenv/cache目录下
cache目录是新建的
具体python版本下载可以https://www.python.org/ftp/python/3.5.3/
PS:官网下载才靠谱哦



pyenv的python版本控制

pyenv提供了三种版本控制方式,以3.5.3举例

pyenv global 3.5.3 global 全局设置系统为3.5.3 Linux大多基于2.6 和2.7版本,肆意更改,危险系数很大,要谨慎操作!!!
pyenv shell 3.5.3 仅生效于当前回话,一旦断开连接就失效了
下面,是我们平时会经常使用的模式
pyenv local 3.5.3
local 本地设置 使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。

如何使用 Pyenv 在 Linux 实现 Python的完美版本控制

如图可见,pyenv确实可以改变当前路径的python版本,但如果一个版本的pip管理都集中在一起,也不适合项目分离.
这就需要用到pyenv的包分离功能

Virtualenv 虚拟环境设置

为什么要使用虚拟环境? 就像上文所述,如果多个项目使用不同的Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的但不同项目使用了不同版本的库,等等这些问题都会带来冲突。最好的解决办法就是每一个项目独立运行自己的“独立小环境”中。

我们先从3.5.3版本中虚拟一个小版本出来

pyenv virtualenv 3.5.3 mt353 

如何使用 Pyenv 在 Linux 实现 Python的完美版本控制

可以在版本列表中存在,就和3.5.3是一样的,就是一个版本了。 真实目录在~/.pyenv/versions/下,以后只要使用这个虚拟版本,包就会按照到这些对应的目录下去,而不是使用3.5.3。

然后我们再去设置一个目录的版本
如图根据实际需求执行 pyenv local mt353
如何使用 Pyenv 在 Linux 实现 Python的完美版本控制
可见当前目录已经加载了mt353版本
以后相关的包管理也会集成在这个版本下面



pip 通用配置

pip 是Python的包管理工具,3.x的版本直接带了,可以直接使用。 和yun一样为了使用国内镜像, 如下配置。

Linux系统 $ mkdir ~/.pip 配置文件在~/.pip/pip.conf

[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com

在不同的虚拟环境中,安装redis包,使用pip list看看效果。 $ pip -V pip install pkgname 命令,是以后经常要使用的安装python包的命令

总结

至此,已经实现了使用pyenv在Centos 6上面进行python的版本控制和项目分离,后续可以自由的开启python项目,任意版本,任意路径,pip不冲突,赞!

版权声明
本文为[osc_ytmgp8ea]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4390196/blog/4716865

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database