pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。
参考链接,感谢大神~
https://blog.csdn.net/u014793102/article/details/80302975
[root@localhost ~]# yum update
[root@localhost ~]# yum -y install git
[root@localhost ~]# git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export ROOT_HOME="/root"' >> ~/.bashrc
echo 'export PYENV_ROOT="$ROOT_HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# 配置立刻生效
[root@localhost ~]# source ~/.bashrc
[root@localhost ~]# pyenv install --list
[root@localhost ~]# yum -y install libc6-dev gcc
[root@localhost ~]# yum -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
[root@localhost ~]# yum -y install zlib* (*必须装)
[root@localhost ~]# yum -y install readline readline-devel readline-static
[root@localhost ~]# yum -y install openssl openssl-devel openssl-static
[root@localhost ~]# yum -y install sqlite-devel
[root@localhost ~]# yum -y install bzip2-devel bzip2-libs
[root@localhost ~]# pyenv install 3.6.4 -v (-v:以日志模式显示安装过程)
[root@localhost ~]# cd ~/.pyenv
[root@localhost ~]# mkdir temp_20200104
[root@localhost ~]# cd temp_20200104
[root@localhost ~]# wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz -P ~/.pyenv/cache/
[root@localhost ~]# pyenv install 3.6.4 -v(没错,就是这样,跟在线安装一个命令,尴尬~)
[root@localhost ~]# pyenv rehash
[root@localhost ~]# pyenv versions
[root@localhost ~]# pyenv global 3.6.4
[root@localhost ~]# pyenv uninstall 3.6.4
注意:
(1) 使用pyenv管理python,必须是用pyenv安装的python才行,系统以前有的,需要重新 用pyenv安装;
(2) 使用pip安装第三方模块时会安装到~/.pyenv/versions/xxx下,不会和系统模块发生冲突;
virtualenv本身是一个独立的项目,用以隔离不同项目的工作环境。例如,项目A和项目B都是使用Python 2.7.13,但是,项目A需要使用Flask 0.8版本,项目B需要使用Flask 0.9版本。我们只要组合pyenv和virtualenv这两个工具,就能够构造Python和第三方库的任意版本组合,拥有了很好的灵活性,也避免了项目之间的相互干扰。
virtualenv本身是一个独立的工具,用户可以不使用pyenv单独使用virtualenv。但是,如果你使用了pyenv,就需要安装pyenv-virtualenv插件而不是virtualenv软件来使用virtualenv的功能。
[root@localhost ~]# pip install virtualenv
# 如果提示版本不匹配,可以使用--upgrade参数
[root@localhost ~]# pip install --upgrade virtualenv
一个项目创建一个virtualenv的虚拟环境,在这个环境中,可以用pip安装项目所需的库,不会影响其他项目。切记一个项目一个虚拟环境,否则可能会发生莫名的错误。
[root@localhost versions]# useradd johnny
[root@localhost versions]# su johnny
执行命令:(发现还是默认的2.7.X,需要完成步骤:4.2、4.3、4.4,否则跳过)
[root@localhost versions]# python
Python 2.7.5 (default, Aug 7 2019, 00:51:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
[johnny@localhost ~]$ echo ' export ROOT_HOME="/root""' >> ~/.bashrc
[johnny@localhost ~]$ echo 'export PYENV_ROOT="$ ROOT_HOME /.pyenv"' >> ~/.bashrc
[johnny@localhost ~]$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
[johnny@localhost ~]$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc (回车)
[johnny@localhost ~]$ source .bashrc
这个步骤很可能会报错,我的处理如下:
(1)把johnny这个用户加到root组中;
(2)根据报错,把涉及到的文件、文件夹,修改对应到读或者写权限。
[johnny@localhost ~]$ usermod -a -G root johnny (-a:append,-G:组)
[johnny@localhost ~]$ su root
[root@localhost johnny]# cd ~
[root@localhost johnny]# chmod -R 755 .pyenv/
[johnny@localhost ~]$ mkdir flask_project
[johnny@localhost ~]$ cd flask_project
# 创建一个不带其他pip包的干净虚拟环境
[johnny@localhost ~]$ virtualenv --no-site-packages venv
Using base prefix '/root/.pyenv/versions/3.6.4'
New python executable in /root/myproject/venv/bin/python3.6
Also creating executable in /root/myproject/venv/bin/python
Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.
[johnny@localhost ~]$ source venv/bin/activate
# 验证
(venv) [johnny@localhost flask_project]$ python
Python 3.6.4 (default, Jan 4 2020, 22:20:29)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
(venv) [johnny@localhost flask_project]$ deactivate