1、查看当前环境中是否存在python安装包
[zyj@localhost ~]$ rpm -qa | grep python gnome-python2-gnome-2.28.0-3.el6.x86_64 python-slip-0.2.20-1.el6_2.noarch python-iniparse-0.3.1-2.1.el6.noarch python-pycurl-7.19.0-9.el6.x86_64 gnome-python2-gconf-2.28.0-3.el6.x86_64 gnome-python2-extras-2.25.3-20.el6.x86_64 gnome-python2-libegg-2.25.3-20.el6.x86_64 notify-python-0.1.1-10.el6.x86_64 python-libs-2.6.6-66.el6_8.x86_64 python-ethtool-0.6-6.el6.x86_64 python-mako-0.3.4-1.el6.noarch abrt-python-2.0.8-43.el6.centos.x86_64 gnome-python2-gnomekeyring-2.28.0-5.el6.x86_64 gnome-python2-bonobo-2.28.0-3.el6.x86_64 python-meh-0.12.1-3.el6.noarch python-2.6.6-66.el6_8.x86_64 libuser-python-0.56.13-8.el6_7.x86_64
2、在官网上查看最新的版本;也可以通过yum install 安装python安装包,但是有可能yum源上面没有最新的python版本,所以采用下载的方式安装最新的安装包。
https://www.python.org/downloads/source/
[root@localhost home]# yum info python //查看yum源上的py安装包信息 Failed to set locale, defaulting to C Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Installed Packages Name : python Arch : x86_64 Version : 2.6.6 Release : 66.el6_8 Size : 78 k Repo : installed From repo : anaconda-CentOS-201703281317.x86_64 Summary : An interpreted, interactive, object-oriented programming language URL : http://www.python.org/ License : Python Description : Python is an interpreted, interactive, object-oriented programming : language often compared to Tcl, Perl, Scheme or Java. Python includes : modules, classes, exceptions, very high level dynamic data types and : dynamic typing. Python supports interfaces to many system calls and : libraries, as well as to various windowing systems (X11, Motif, Tk, : Mac and MFC). : : Programmers can write new built-in modules for Python in C or C++. : Python can be used as an extension language for applications that need : a programmable interface. : : Note that documentation for Python is provided in the python-docs : package. : : This package provides the "python" executable; most of the actual : implementation is within the "python-libs" package. [root@localhost home]# [root@localhost home]# yum search python3 //查询yum源是否有? Failed to set locale, defaulting to C Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Warning: No matches found for: python3 No Matches found
3、安装python源码:
- 下载:将安装包上传到linux的家目录下
[root@localhost home]# cd zyj [root@localhost zyj]# ll total 31312 drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Desktop drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Documents drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Downloads drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Music drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Pictures drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Public -rw-rw-r--. 1 zyj zyj 22994617 May 1 2018 Python-3.6.5.tgz drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Templates drwxr-xr-x. 2 zyj zyj 4096 Apr 14 09:13 Videos -rw-rw-r--. 1 zyj zyj 9034460 Apr 27 21:23 mysql-server-5.1.73-8.el6_8.x86_64.rpm [root@localhost zyj]# mv Python-3.6.5.tgz ../ [root@localhost home]# ll total 22472 -rwxrwxrwx. 1 root root 10 Apr 25 11:05 1.txt -rw-rw-r--. 1 zyj zyj 22994617 May 1 2018 Python-3.6.5.tgz -rwxrwxrwx. 1 zyj zyj 86 Apr 15 09:23 hello.txt drwxr-xrwx. 2 root root 4096 Apr 15 07:00 x drwx------. 24 zyj zyj 4096 May 1 00:00 zyj
- 查看源码(.c结尾为c语言):在windows下打开压缩包,查看里面文件的后缀。
- 准备编译环境(检查c语言编译环境,gcc)
[root@localhost home]# rpm -qa | grep gcc libgcc-4.4.7-18.el6.x86_64 gcc-4.4.7-18.el6.x86_64
[root@localhost home]# yum install gcc-c++ //安装c++编译环境
- 检查(依赖、兼容),预编译:
[root@localhost home]# tar -zxvf Python-3.6.5.tgz //解压安装包 [root@localhost home]# ls 1.txt Python-3.6.5 Python-3.6.5.tgz hello.txt x zyj [root@localhost home]# cd Python-3.6.5 //进入安装包目录下 [root@localhost Python-3.6.5]# ll total 1036 drwxr-xr-x. 18 sl sl 4096 Mar 28 03:24 Doc drwxr-xr-x. 2 sl sl 4096 Mar 28 02:19 Grammar drwxr-xr-x. 2 sl sl 4096 Mar 28 02:19 Include -rw-r--r--. 1 sl sl 12763 Mar 28 02:19 LICENSE drwxr-xr-x. 33 sl sl 4096 Mar 28 02:19 Lib drwxr-xr-x. 8 sl sl 4096 Mar 28 02:19 Mac -rw-r--r--. 1 sl sl 61032 Mar 28 02:19 Makefile.pre.in drwxr-xr-x. 2 sl sl 4096 Mar 28 03:24 Misc drwxr-xr-x. 13 sl sl 4096 Mar 28 02:19 Modules drwxr-xr-x. 4 sl sl 4096 Mar 28 02:19 Objects drwxr-xr-x. 6 sl sl 4096 Mar 28 02:19 PC drwxr-xr-x. 2 sl sl 4096 Mar 28 02:19 PCbuild drwxr-xr-x. 2 sl sl 4096 Mar 28 02:19 Parser drwxr-xr-x. 2 sl sl 4096 Mar 28 02:19 Programs drwxr-xr-x. 3 sl sl 4096 Mar 28 02:19 Python -rw-r--r--. 1 sl sl 9281 Mar 28 02:19 README.rst drwxr-xr-x. 23 sl sl 4096 Mar 28 02:19 Tools -rw-r--r--. 1 sl sl 13335 Mar 28 02:19 aclocal.m4 -rwxr-xr-x. 1 sl sl 44259 Mar 28 02:19 config.guess -rwxr-xr-x. 1 sl sl 36515 Mar 28 02:19 config.sub -rwxr-xr-x. 1 sl sl 490243 Mar 28 02:19 configure -rw-r--r--. 1 sl sl 163178 Mar 28 02:19 configure.ac -rwxr-xr-x. 1 sl sl 7122 Mar 28 02:19 install-sh -rw-r--r--. 1 sl sl 42152 Mar 28 02:19 pyconfig.h.in -rw-r--r--. 1 sl sl 104570 Mar 28 02:19 setup.py
执行可执行文件:
[root@localhost Python-3.6.5]# ./configure --help `configure' configures python 3.6 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] ...... Report bugs to <https://bugs.python.org/>. [root@localhost Python-3.6.5]# ./configure --prefix=/usr/python-3.6.5 //第三方软件安装在/usr/ 目录下。 checking whether gcc -pthread supports computed gotos... yes checking for build directories... done checking for -O2... yes checking for glibc _FORTIFY_SOURCE/memmove bug... no checking for gcc ipa-pure-const bug... no checking for stdatomic.h... no checking for GCC >= 4.7 __atomic builtins... no checking for ensurepip... upgrade checking if the dirent structure of a d_type field... yes checking for the Linux getrandom() syscall... no checking for the getrandom() function... no configure: creating ./config.status config.status: creating Makefile.pre config.status: creating Modules/Setup.config config.status: creating Misc/python.pc config.status: creating Misc/python-config.sh config.status: creating Modules/ld_so_aix config.status: creating pyconfig.h creating Modules/Setup creating Modules/Setup.local creating Makefile If you want a release build with all stable optimizations active (PGO, etc), please run ./configure --enable-optimizations
准备安装依赖包:zlib、openssl。python的pip需要依赖这两个包。
[root@localhost home]# yum install zlib* openssl* //安装依赖包 [root@localhost home]# cd Python-3.6.5 [root@localhost Python-3.6.5]# ls Doc LICENSE Makefile Misc PC Programs Tools config.log configure pyconfig.h Grammar Lib Makefile.pre Modules PCbuild Python aclocal.m4 config.status configure.ac pyconfig.h.in Include Mac Makefile.pre.in Objects Parser README.rst config.guess config.sub install-sh setup.py [root@localhost Python-3.6.5]# ./configure --prefix=/usr/python-3.6.5 --enable-optimizations //完整的预编译 ... creating Modules/Setup creating Modules/Setup.local creating Makefile //没有任何报错 [root@localhost Python-3.6.5]#
- 编译:make
[root@localhost Python-3.6.5]# make ... make[1]: Entering directory `/home/Python-3.6.5' find . -name '*.gc??' -exec rm -f {} ';' find . -name '*.profclang?' -exec rm -f {} ';' find . -name '*.dyn' -exec rm -f {} ';' rm -f /home/Python-3.6.5/coverage.info rm -rf /home/Python-3.6.5/lcov-report make[1]: Leaving directory `/home/Python-3.6.5' [root@localhost Python-3.6.5]# //一般检查最后几行有没有error
- 安装:make install
[root@localhost Python-3.6.5]#make install //安装 ...... Collecting setuptools Collecting pip Installing collected packages: setuptools, pip Successfully installed pip-9.0.3 setuptools-39.0.1 [root@localhost Python-3.6.5]# [root@localhost Python-3.6.5]# cd /usr/python-3.6.5/ [root@localhost python-3.6.5]# ls bin include lib share [root@localhost python-3.6.5]# pwd //python安装后的目录 /usr/python-3.6.5 [root@localhost python-3.6.5]# cd /home/Python-3.6.5 [root@localhost Python-3.6.5]# pwd //python源码目录,可以删除掉 /home/Python-3.6.5 [root@localhost Python-3.6.5]# cd /usr/python-3.6.5/ [root@localhost python-3.6.5]# ls bin include lib share [root@localhost python-3.6.5]# ll total 16 drwxr-xr-x. 2 root root 4096 May 1 01:09 bin drwxr-xr-x. 3 root root 4096 May 1 01:09 include drwxr-xr-x. 4 root root 4096 May 1 01:09 lib drwxr-xr-x. 3 root root 4096 May 1 01:09 share [root@localhost python-3.6.5]# cd bin [root@localhost bin]# ll total 17440 lrwxrwxrwx. 1 root root 8 May 1 01:09 2to3 -> 2to3-3.6 -rwxr-xr-x. 1 root root 108 May 1 01:09 2to3-3.6 -rwxr-xr-x. 1 root root 249 May 1 01:09 easy_install-3.6 lrwxrwxrwx. 1 root root 7 May 1 01:09 idle3 -> idle3.6 -rwxr-xr-x. 1 root root 106 May 1 01:09 idle3.6 -rwxr-xr-x. 1 root root 221 May 1 01:09 pip3 -rwxr-xr-x. 1 root root 221 May 1 01:09 pip3.6 lrwxrwxrwx. 1 root root 8 May 1 01:09 pydoc3 -> pydoc3.6 -rwxr-xr-x. 1 root root 91 May 1 01:09 pydoc3.6 lrwxrwxrwx. 1 root root 9 May 1 01:09 python3 -> python3.6 lrwxrwxrwx. 1 root root 16 May 1 01:09 python3-config -> python3.6-config -rwxr-xr-x. 2 root root 8912198 May 1 01:06 python3.6 lrwxrwxrwx. 1 root root 17 May 1 01:09 python3.6-config -> python3.6m-config -rwxr-xr-x. 2 root root 8912198 May 1 01:06 python3.6m -rwxr-xr-x. 1 root root 3110 May 1 01:09 python3.6m-config lrwxrwxrwx. 1 root root 10 May 1 01:09 pyvenv -> pyvenv-3.6 -rwxr-xr-x. 1 root root 448 May 1 01:09 pyvenv-3.6 [root@localhost bin]# python Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit >>> exit() [root@localhost bin]# [root@localhost bin]# python3 //需要设置环境变量,如果命令找不到,则此命令的执行文件不在系统的环境变量(PATH)中。 bash: python3: command not found
- 配置环境变量:让系统自动找到命令执行文件路径。PATH的值是一堆目录,之间通过冒号隔开。
[root@localhost bin]# printenv //查看环境变量或使用echo $PATH查看 HOSTNAME=localhost.localdomain SELINUX_ROLE_REQUESTED= SHELL=/bin/bash TERM=xterm HISTSIZE=1000 SSH_CLIENT=192.168.166.1 50260 22 SELINUX_USE_CURRENT_RANGE= SSH_TTY=/dev/pts/0 USER=zyj PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/zyj/bin 目录之间的分隔使用冒号隔开。 MAIL=/var/spool/mail/zyj PWD=/usr/python-3.6.5/bin LANG=en_US:.UTF-8 SELINUX_LEVEL_REQUESTED= HISTCONTROL=ignoredups SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass HOME=/root SHLVL=2 LOGNAME=zyj SSH_CONNECTION=192.168.166.1 50260 192.168.166.128 22 LESSOPEN=||/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 OLDPWD=/usr/python-3.6.5 _=/usr/bin/printenv [root@localhost bin]#
设置环境变量:
[root@localhost bin]# vi ~/.bash_profile [root@localhost bin]# vi ~/.bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi PATH=$PATH:/usr/python-3.6.5/bin //在原有PATH下追加新的路径。 #第二种修改环境变量的方式 PYTHON_HOME=/usr/python-3.6.5 PATH=$PATH:$PYTHON_HOME/bin :wq [root@localhost bin]# source ~/.bashrc //执行生效,只要PATH修改,均需要source生效。 [root@localhost ~]# echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/zyj/bin:/usr/python-3.6.5/bin [root@localhost bin]# python3 Python 3.6.5 (default, May 1 2018, 00:59:27) [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
注意:一般遵守改变自己用户的配置文件,不要改整个系统的配置文件。
/etc/profile :整个系统的环境变量配置文件
~/.bashrc:当前用户的环境变量配置文件,推荐使用。
补充:安装一个python工具,ipython3,这个工具可以在python中执行linux的命令,比较好用,推荐安装。
[root@localhost bin]# pip3 install ipython3 Collecting ipython [root@localhost bin]# ipython3 /usr/python-3.6.5/lib/python3.6/site-packages/IPython/core/history.py:226: UserWarning: IPython History requires SQLite, your history will not be saved warn("IPython History requires SQLite, your history will not be saved") Python 3.6.5 (default, May 1 2018, 00:59:27) Type 'copyright', 'credits' or 'license' for more information IPython 6.3.1 -- An enhanced Interactive Python. Type '?' for help. In [1]: ls 2to3@ idle3@ iptest3* pip3* pydoc3.6* python3-config@ python3.6m* pyvenv-3.6* 2to3-3.6* idle3.6* ipython* pip3.6* pygmentize* python3.6* python3.6m-config* easy_install-3.6* iptest* ipython3* pydoc3@ python3@ python3.6-config@ pyvenv@ In [2]: cd /home