获取【pyenv】的程序:
[root@zabbix-server ~]# git clone https://github.com/yyuu/pyenv.git ~/.pyenv Cloning into '/root/.pyenv'... remote: Counting objects: 13794, done. remote: Compressing objects: 100% (5/5), done. remote: Total 13794 (delta 0), reused 0 (delta 0), pack-reused 13789 Receiving objects: 100% (13794/13794), 2.44 MiB | 521.00 KiB/s, done. Resolving deltas: 100% (9570/9570), done. [root@zabbix-server ~]# [root@zabbix-server ~]# ls -a ~/ | grep --color pyenv drwxr-xr-x 10 root root 4096 |2016-09-23|01:06:37 .pyenv [root@zabbix-server ~]# [root@zabbix-server ~]# ls -a ~/.pyenv/ total 88 dr-xr-x---. 15 root root 4096 |2016-09-23|01:06:29 .. -rw-r--r-- 1 root root 35 |2016-09-23|01:06:37 .vimrc -rw-r--r-- 1 root root 161 |2016-09-23|01:06:37 .travis.yml -rw-r--r-- 1 root root 14092 |2016-09-23|01:06:37 README.md -rw-r--r-- 1 root root 285 |2016-09-23|01:06:37 Makefile -rw-r--r-- 1 root root 1092 |2016-09-23|01:06:37 LICENSE -rw-r--r-- 1 root root 89 |2016-09-23|01:06:37 .gitignore -rw-r--r-- 1 root root 3390 |2016-09-23|01:06:37 CONDUCT.md drwxr-xr-x 2 root root 56 |2016-09-23|01:06:37 completions -rw-r--r-- 1 root root 7522 |2016-09-23|01:06:37 COMMANDS.md -rw-r--r-- 1 root root 20236 |2016-09-23|01:06:37 CHANGELOG.md drwxr-xr-x 2 root root 18 |2016-09-23|01:06:37 bin -rw-r--r-- 1 root root 19 |2016-09-23|01:06:37 .agignore drwxr-xr-x 3 root root 42 |2016-09-23|01:06:37 plugins drwxr-xr-x 2 root root 4096 |2016-09-23|01:06:37 libexec drwxr-xr-x 2 root root 87 |2016-09-23|01:06:37 src drwxr-xr-x 4 root root 30 |2016-09-23|01:06:37 pyenv.d drwxr-xr-x 10 root root 4096 |2016-09-23|01:06:37 . drwxr-xr-x 3 root root 4096 |2016-09-23|01:06:37 test drwxr-xr-x 8 root root 152 |2016-09-23|01:06:37 .git [root@zabbix-server ~]#
配置环境变量:
[root@zabbix-server ~]# vi ~/.bash_profile [root@zabbix-server ~]# [root@zabbix-server ~]# cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH # for PYENV export PYENV_ROOT="/root/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" [root@zabbix-server ~]# [root@zabbix-server ~]# source ~/.bash_profile [root@zabbix-server ~]#
这样就安装完了。
列出可以安装的python版本:
[root@zabbix-server ~]# pyenv install --list Available versions: 2.1.3 2.2.3 2.3.7 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.6.6 2.6.7 2.6.8 2.6.9 2.7-dev 2.7 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.10 2.7.11 2.7.12 3.0.1 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.2-dev 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3-dev 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.4.0 3.4-dev 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.5.0 3.5-dev 3.5.1 3.5.2 3.6.0b1 3.6-dev anaconda-1.4.0 anaconda-1.5.0 anaconda-1.5.1 anaconda-1.6.0 anaconda-1.6.1 anaconda-1.7.0 anaconda-1.8.0 anaconda-1.9.0 anaconda-1.9.1 anaconda-1.9.2 anaconda-2.0.0 anaconda-2.0.1 anaconda-2.1.0 anaconda-2.2.0 anaconda-2.3.0 anaconda-2.4.0 anaconda-4.0.0 anaconda2-2.4.0 anaconda2-2.4.1 anaconda2-2.5.0 anaconda2-4.0.0 anaconda2-4.1.0 anaconda2-4.1.1 anaconda3-2.0.0 anaconda3-2.0.1 anaconda3-2.1.0 anaconda3-2.2.0 anaconda3-2.3.0 anaconda3-2.4.0 anaconda3-2.4.1 anaconda3-2.5.0 anaconda3-4.0.0 anaconda3-4.1.0 anaconda3-4.1.1 ironpython-dev ironpython-2.7.4 ironpython-2.7.5 jython-dev jython-2.5.0 jython-2.5-dev jython-2.5.1 jython-2.5.2 jython-2.5.3 jython-2.5.4-rc1 jython-2.7.0 jython-2.7.1b1 jython-2.7.1b2 jython-2.7.1b3 miniconda-latest miniconda-2.2.2 miniconda-3.0.0 miniconda-3.0.4 miniconda-3.0.5 miniconda-3.3.0 miniconda-3.4.2 miniconda-3.7.0 miniconda-3.8.3 miniconda-3.9.1 miniconda-3.10.1 miniconda-3.16.0 miniconda-3.18.3 miniconda2-latest miniconda2-3.18.3 miniconda2-3.19.0 miniconda2-4.0.5 miniconda2-4.1.11 miniconda3-latest miniconda3-2.2.2 miniconda3-3.0.0 miniconda3-3.0.4 miniconda3-3.0.5 miniconda3-3.3.0 miniconda3-3.4.2 miniconda3-3.7.0 miniconda3-3.8.3 miniconda3-3.9.1 miniconda3-3.10.1 miniconda3-3.16.0 miniconda3-3.18.3 miniconda3-3.19.0 miniconda3-4.0.5 miniconda3-4.1.11 pypy-c-jit-latest pypy-c-nojit-latest pypy-dev pypy-stm-2.3 pypy-portable-2.3.1 pypy-portable-2.4 pypy-portable-2.5 pypy-portable-2.5.1 pypy-stm-2.5.1 pypy-portable-2.6 pypy-portable-2.6.1 pypy-portable-4.0 pypy-portable-4.0.1 pypy-portable-5.0 pypy-portable-5.0.1 pypy-portable-5.1 pypy-portable-5.1.1 pypy-portable-5.3.1 pypy-portable-5.4 pypy-portable-5.4.1 pypy-1.5-src pypy-1.5 pypy-1.6 pypy-1.7-dev pypy-1.7 pypy-1.8-dev pypy-1.8 pypy-1.9-dev pypy-1.9 pypy-2.0-dev pypy-2.0-src pypy-2.0 pypy-2.0.1-src pypy-2.0.1 pypy-2.0.2-src pypy-2.0.2 pypy-2.1-src pypy-2.1 pypy-2.2-src pypy-2.2 pypy-2.2.1-src pypy-2.2.1 pypy-2.3-src pypy-2.3 pypy-2.3.1-src pypy-2.3.1 pypy-2.4.0-src pypy-2.4.0 pypy-2.4-beta1-src pypy-2.4-beta1 pypy-2.5.0-src pypy-2.5.0 pypy-2.5.1-src pypy-2.5.1 pypy-2.6.0-src pypy-2.6.0 pypy-2.6.1-src pypy-2.6.1 pypy-4.0.0-src pypy-4.0.0 pypy-4.0.1-src pypy-4.0.1 pypy-5.0.0-src pypy-5.0.0 pypy-5.0.1-src pypy-5.0.1 pypy-5.1-src pypy-5.1 pypy-5.1.1-src pypy-5.1.1 pypy-5.3-src pypy-5.3 pypy-5.3.1-src pypy-5.3.1 pypy-5.4-src pypy-5.4 pypy-5.4.1-src pypy-5.4.1 pypy2-5.3-src pypy2-5.3 pypy2-5.3.1-src pypy2-5.3.1 pypy2-5.4-src pypy2-5.4 pypy2-5.4.1-src pypy2-5.4.1 pypy3-dev pypy3-portable-2.3.1 pypy3-portable-2.4 pypy3-2.3.1-src pypy3-2.3.1 pypy3-2.4.0-src pypy3-2.4.0 pypy3.3-5.2-alpha1-src pypy3.3-5.2-alpha1 stackless-dev stackless-2.7-dev stackless-2.7.2 stackless-2.7.3 stackless-2.7.4 stackless-2.7.5 stackless-2.7.6 stackless-2.7.7 stackless-2.7.8 stackless-3.2-dev stackless-3.2.2 stackless-3.2.5 stackless-3.3-dev stackless-3.3.5 stackless-3.4.1 [root@zabbix-server ~]#
查看当前的系统的Python版本:
[root@zabbix-server ~]# rpm -qa | grep --color ^python python-javapackages-3.4.1-6.el7_0.noarch python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch python-ldap-2.4.15-2.el7.x86_64 python-urwid-1.1.1-3.el7.x86_64 python-IPy-0.75-6.el7.noarch python-slip-dbus-0.4.0-2.el7.noarch python-di-0.3-2.el7.noarch python-pyudev-0.15-6.el7.noarch python-netaddr-0.7.5-7.el7.noarch python-caribou-0.4.11-3.el7.noarch python-sssdconfig-1.12.2-58.el7.noarch python-lxml-3.2.1-4.el7.x86_64 python-deltarpm-3.6-3.el7.x86_64 python-slip-0.4.0-2.el7.noarch python-dns-1.11.1-2.20140901git9329daf.el7.noarch python-coverage-3.6-0.5.b3.el7.x86_64 python-iniparse-0.4-9.el7.noarch python-chardet-2.0.1-7.el7.noarch python-rtslib-2.1.fb50-1.el7.noarch python-pycurl-7.19.0-17.el7.x86_64 python-pwquality-1.2.3-4.el7.x86_64 python-libs-2.7.5-16.el7.x86_64 python-inotify-0.9.4-4.el7.noarch python-meh-0.25.2-1.el7.noarch python-brlapi-0.6.0-9.el7.x86_64 python-dmidecode-3.10.13-11.el7.x86_64 python-cups-1.9.63-6.el7.x86_64 python-yubico-1.2.1-3.el7.noarch python-pyasn1-0.1.6-2.el7.noarch python-setuptools-0.9.8-3.el7.noarch python-kerberos-1.1-15.el7.x86_64 python-kmod-0.9-4.el7.x86_64 python-2.7.5-16.el7.x86_64 python-configshell-1.1.fb14-1.el7.noarch python-blivet-0.61.0.26-1.el7.noarch python-decorator-3.4.0-3.el7.noarch python-six-1.3.0-4.el7.noarch python-ethtool-0.8-5.el7.x86_64 python-qrcode-core-5.0.1-1.el7.noarch python-configobj-4.7.2-7.el7.noarch python-krbV-1.0.90-8.el7.x86_64 python-augeas-0.4.1-5.el7.noarch python-pyblock-0.53-6.el7.x86_64 python-backports-1.0-8.el7.x86_64 python-kitchen-1.1.1-5.el7.noarch python-urlgrabber-3.10-6.el7.noarch python-dateutil-1.5-7.el7.noarch python-meh-gui-0.25.2-1.el7.noarch python-nss-0.16.0-2.el7.x86_64 [root@zabbix-server ~]# [root@zabbix-server ~]# whereis python python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /usr/include/python2.7 /usr/share/man/man1/python.1.gz [root@zabbix-server ~]#
可以看到,当前系统中的Python是2.7.5的版本:【python-2.7.5-16.el7.x86_64】。
当前最新版本为:
1. 3.5.2
2. 2.7.12
用pyenv安装具体版本前,检查系统软件包:
yum install -y zlib* readline* bzip2* openssl* sqlite*
否则,会出现这样的错误:
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib? ERROR: The Python zlib extension was not compiled. Missing the zlib? Please consult to the Wiki page to fix the problem. https://github.com/yyuu/pyenv/wiki/Common-build-problems BUILD FAILED (RedHatEnterpriseServer 5.10 using python-build 1.0.2) Inspect or clean up the working tree at /tmp/python-build.20160923005926.29366 Results logged to /tmp/python-build.20160923005926.29366.log Last 10 log lines: rm -f /root/.pyenv/versions/2.7.9/share/man/man1/python.1 (cd /root/.pyenv/versions/2.7.9/share/man/man1; ln -s python2.1 python.1) if test "xno" != "xno" ; then \ case no in \ upgrade) ensurepip="--upgrade" ;; \ install|*) ensurepip="" ;; \ esac; \ ./python -E -m ensurepip \ $ensurepip --root=/ ; \ fi
给系统新装一个Python版本:3.5.2。
[root@zabbix-server ~]# pyenv install -v 3.5.2 /tmp/python-build.20160923011056.42291 ~ Downloading Python-3.5.2.tar.xz... -> https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz (... ....过多的输出。) rm -f /root/.pyenv/versions/3.5.2/share/man/man1/python3.1 (cd /root/.pyenv/versions/3.5.2/share/man/man1; ln -s python3.5.1 python3.1) if test "xupgrade" != "xno" ; then \ case upgrade in \ upgrade) ensurepip="--upgrade" ;; \ install|*) ensurepip="" ;; \ esac; \ ./python -E -m ensurepip \ $ensurepip --root=/ ; \ fi Ignoring indexes: https://pypi.python.org/simple Collecting setuptools Collecting pip Installing collected packages: setuptools, pip Successfully installed pip-8.1.1 setuptools-20.10.1 Installed Python-3.5.2 to /root/.pyenv/versions/3.5.2 /tmp/python-build.20160923012503.70564 ~ ~ [root@zabbix-server ~]#
这样,就安装成功了。
安装后查看当前系统状态:
[root@zabbix-server ~]# whereis python python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /usr/include/python2.7 /root/.pyenv/shims/python /root/.pyenv/shims/python3.5 /root/.pyenv/shims/python3.5-config /root/.pyenv/shims/python3.5m /root/.pyenv/shims/python3.5m-config /usr/share/man/man1/python.1.gz [root@zabbix-server ~]#
切换到版本:3.5.2。
[root@zabbix-server ~]# pyenv version system (set by /root/.pyenv/version) [root@zabbix-server ~]# [root@zabbix-server ~]# pyenv global 3.5.2 [root@zabbix-server ~]# [root@zabbix-server ~]# pyenv version 3.5.2 (set by /root/.pyenv/version) [root@zabbix-server ~]#
安装:pyenv-virtualenv
[root@zabbix-server ~]# git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenvCloning into '/root/.pyenv/plugins/pyenv-virtualenv'... remote: Counting objects: 1856, done. remote: Total 1856 (delta 0), reused 0 (delta 0), pack-reused 1856 Receiving objects: 100% (1856/1856), 529.51 KiB | 190.00 KiB/s, done. Resolving deltas: 100% (1272/1272), done. [root@zabbix-server ~]#
配置环境变量:
[root@zabbix-server ~]# vi ~/.bash_profile [root@zabbix-server ~]# [root@zabbix-server ~]# cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH # for PYENV export PYENV_ROOT="/root/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" # for PYENV VIRTUALENV eval "$(pyenv virtualenv-init -)" [root@zabbix-server ~]# [root@zabbix-server ~]# source ~/.bash_profile [root@zabbix-server ~]#
创建虚拟环境:
[root@zabbix-server ~]# pyenv virtualenv 3.5.2 env_python_352 Ignoring indexes: https://pypi.python.org/simple Requirement already satisfied (use --upgrade to upgrade): setuptools in /root/.pyenv/versions/3.5.2/envs/env_python_352/lib/python3.5/site-packages Requirement already satisfied (use --upgrade to upgrade): pip in /root/.pyenv/versions/3.5.2/envs/env_python_352/lib/python3.5/site-packages [root@zabbix-server ~]#
使用虚拟环境,并退出:
RHEL5:
[root@linux-center ~]# python -V Python 2.4.3 [root@linux-center ~]# [root@linux-center ~]# pyenv virtualenv 2.7.9 env279 Downloading/unpacking virtualenv Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB): 3.5MB downloaded Installing collected packages: virtualenv Successfully installed virtualenv Cleaning up... New python executable in /root/.pyenv/versions/2.7.9/envs/env279/bin/python2.7 Also creating executable in /root/.pyenv/versions/2.7.9/envs/env279/bin/python Installing setuptools, pip, wheel...done. Ignoring indexes: https://pypi.python.org/simple/ Requirement already satisfied (use --upgrade to upgrade): setuptools in /root/.pyenv/versions/2.7.9/envs/env279/lib/python2.7/site-packages Requirement already satisfied (use --upgrade to upgrade): pip in /root/.pyenv/versions/2.7.9/envs/env279/lib/python2.7/site-packages Cleaning up... [root@linux-center ~]# [root@linux-center ~]# python -V Python 2.4.3 [root@linux-center ~]# [root@linux-center ~]# pyenv activate env279 pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior. (env279) [root@linux-center ~]# (env279) [root@linux-center ~]# python -V Python 2.7.9 (env279) [root@linux-center ~]# (env279) [root@linux-center ~]# pyenv deactivate [root@linux-center ~]# [root@linux-center ~]# python -V Python 2.4.3 [root@linux-center ~]#
RHEL7:
[root@zabbix-server ~]# pyenv activate env_python_352 pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior. (env_python_352) [root@zabbix-server ~]# (env_python_352) [root@zabbix-server ~]# python -V Python 3.5.2 (env_python_352) [root@zabbix-server ~]# (env_python_352) [root@zabbix-server ~]# pyenv deactivate [root@zabbix-server ~]# [root@zabbix-server ~]# python -V Python 3.5.2 [root@zabbix-server ~]# [root@zabbix-server ~]# pyenv virtualenv 2.7.12 env2712 Collecting virtualenv Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB) 100% |████████████████████████████████| 3.5MB 104kB/s Installing collected packages: virtualenv Successfully installed virtualenv-15.0.3 You are using pip version 8.1.1, however version 8.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. New python executable in /root/.pyenv/versions/2.7.12/envs/env2712/bin/python2.7 Also creating executable in /root/.pyenv/versions/2.7.12/envs/env2712/bin/python Installing setuptools, pip, wheel...done. Ignoring indexes: https://pypi.python.org/simple Requirement already satisfied (use --upgrade to upgrade): setuptools in /root/.pyenv/versions/2.7.12/envs/env2712/lib/python2.7/site-packages Requirement already satisfied (use --upgrade to upgrade): pip in /root/.pyenv/versions/2.7.12/envs/env2712/lib/python2.7/site-packages [root@zabbix-server ~]# [root@zabbix-server ~]# python -V Python 3.5.2 [root@zabbix-server ~]# [root@zabbix-server ~]# pyenv activate env2712 pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior. (env2712) [root@zabbix-server ~]# (env2712) [root@zabbix-server ~]# python -V Python 2.7.12 (env2712) [root@zabbix-server ~]# (env2712) [root@zabbix-server ~]# pyenv deactivate [root@zabbix-server ~]# [root@zabbix-server ~]# python -V Python 3.5.2 [root@zabbix-server ~]#
如果你切换的虚拟环境不存在,你会遇到这样的错误:
[root@zabbix-server ~]# pyenv activate not_exsist pyenv-virtualenv: version `not_exsist' is not a virtualenv [root@zabbix-server ~]#
——————————————
Done。