zoukankan      html  css  js  c++  java
  • Linux下安装python3

    编译安装python3

    1.1安装python前的库环境,非常重要

    yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

    1.2下载python源码包

    网址:https://www.python.org/downloads/release/python-362/

    下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

    1.3下载,解压安装源码包

    1、configure

    这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:

    ./configure --prefix=/usr

    上面的意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。

    同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 --with、--enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。

    2、make

    这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。

    如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。

    make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。

    make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。

    3、make install

    这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)

    wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz
    xz -d Python-3.6.7.tar.xz
    tar -xf Python-3.6.7.tar
    #yum install gcc -y
    .
    /configure --prefix=/opt/python make && make install
    ---------------------
    用python查看默认安装路径
    >>> import sys
    >>> sys.path
    ['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6',
    '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
    --------------------
    python3.4默认没添加path
    在/etc/profile最后一行添加
    export PATH=$PATH:/opt/python/bin
    然后
    source /etc/profile

    #python快捷path就被改了,yum用的python2,麻烦
    编译安装python3
    1.切换opt目录(这是一个约定)
    cd /opt 
    2.下载python3的源代码
    wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
    3.安装python前的库环境,非常重要
    yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
    
    4.解压缩python3的源代码压缩文件
    cd /opt/ 进入存在这个文件的目录
    tar -xf Python-3.6.2.tgz 解压
    5.cd Python-3.6.2/  进入源代码目录下,准备开始编译安装 
    6.编译安装三部曲
    第一曲:
    cd Python-3.6.2/
    #configure 这个脚本文件,只是为了释放makefile,用于指定python3安装到哪里
    ./configure    --prefix=/opt/python36  --with-ssl
            --prefix 这个参数用于指定python安装的路径
    第二曲:
    执行make开始编译python3.6的源代码
    make
    
    第三曲:
    make install  生成/opt/python36
    
    (第二曲和第三曲可以写成    make && make install)
    
    7.配置环境变量
    echo $PATH             #$PATH是有优先级顺序的
    将/opt/python36/bin/放入环境变量,注意要添加到path的最前面
    #变量的赋值只是临时有效
    PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
    #将这个参数,写入到Linux的全局变量配置文件中
    vim /etc/profile     #打开这个全局变量文件,写入PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"到文件最后
    
    8.退出(logout),重新加载全局变量.
    9.which python3 确认是否正确安装
    10.不要将系统默认的python 改成python3  这是一个大坑。
    (因为Linux有很多工具,默认是用的python2,例如yum)
    
    
    11.在Linux下安装django程序
    pip3 install -i https://pypi.douban.com/simple django==1.11.16
    pip3 install django==1.11.16
    pip3 list
    
    12.使用django命令创建项目
    [root@localhost ~]# cd /opt
    [root@localhost opt]# django-admin startproject mysite
    
    13.修改mysite的settings.py中的ALLOWED_HOSTS
    vim /opt/mysite/mysite/settings.py     #/查找
    ALLOWED_HOSTS = ["*"]
    
    14.启动项目
    [root@localhost opt]# cd mysite/
    [root@localhost mysite]# python3 manage.py runserver 0.0.0.0:9999
    
    补充:
    python3的管理工具是pip3 install flask
    python2的是easy_install flask
    
    
    [root@localhost ~]# python -V
    Python 2.7.5
    [root@localhost ~]# python --version
    Python 2.7.5
    [root@localhost ~]# python3 --version
    Python 3.6.2
    [root@localhost ~]# pip3 list
    DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
    Django (1.11.16)
    pip (9.0.1)
    pytz (2019.2)
    setuptools (28.8.0)
    You are using pip version 9.0.1, however version 19.2.3 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    [root@localhost ~]# 
    编译安装python3

    python Tab自动补全

    下载setuptool 3.4以上已经默认安装了easy_install-3.4

    下载地址:
    https://pypi.python.org/pypi/setuptools/36.2.7
    下载命令:
    wget https://pypi.python.org/packages/07/a0/11d3d76df54b9701c0f7bf23ea9b00c61c5e14eb7962bb29aed866a5844e/setuptools-36.2.7.zip#md5=b9e6c049617bac0f9e908a41ab4a29ac
    解压:
    unzip setuptools-36.2.7.zip
    编译:
    python3 setup.py build
    python2 setup.py build
    无误后安装:
    python3 setup.py install
    python2 setup.py install
    没什么用

    下载readline

    #yum install -y readline-devel -y 
    #pip install readline
    tab补全
    #python startup file
    import readline,rlcompleter
    #tab completion
    readline.parse_and_bind('tab:complete')
    ----------------------------
    python历史记录
    #history file
    import os
    history_file = os.path.join(os.environ["HOME"],".pythonhistory")
    [root@mm_local ~]# echo "export PYTHONSTARTUP='/root/.pythonstartup'" >> /root/.bashrc   
    [root@mm_local ~]# source /root/.bashrc  
    [root@mm_local ~]# cat /root/.pythonstartup   
    import os  
    import readline  
    import rlcompleter  
    import atexit  
      
      
    #tab completion  
    readline.parse_and_bind("tab: complete")  
    
      
      
    #history file  
    history_file = os.path.join(os.environ["HOME"],".pythonhistory")  
    try:  
        readline.read_history_file(history_file)  
    except IOError:  
        pass  
    atexit.register(readline.write_history_file,history_file)  
      
      
    del os,history_file,readline,rlcompleter  
    [root@mm_local ~]# python  
    Python 2.7.3 (default, Jun  5 2013, 22:40:26)   
    [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2  
    Type "help", "copyright", "credits" or "license" for more information.  
    >>> import sys  
    >>> sys.path<tab> #按tab键就可以自动补全了  
      
    [root@mm_local ~]# python  
    >>>  
    >>> sys.path #按上下方向键即可找到历史命令 
    整体代码

    加入python的启动环境变量,永久生效自动补全

    只需要启动时执行一条命令即可
    
    import rlcompleter, readline
    readline.parse_and_bind('tab:complete')
    可以将上述的代码存于~/.pythonrc.py文件中。
    
    然后,在~/.bashrc中设置
    
    export PYTHONSTARTUP=~/.pythonrc.py
    这样,每次启动终端,bash就会设置PYTHONSTARTUP这个环境变量,然后,python启动时就会使用这个变量指定的文件中的初始化代码。
    
    在python解释器中,输入一个变量的一部分,或者变量后面加句点,再按TAB键就可以看到自动补全的威力。

    Linux下安装程序的方法

    • rpm -ivh 包名.rpm  需要手动解决依赖关系
    • yum install 包名 -y          yum自动处理依赖关系
    • 编译安装(源码安装)

    安装Lrzsz

    #安装此软件,即可拖拽上传下载linux代码到windows
    yum install lrzsz

    软件包管理

    软件包是什么?
    软件包顾名思义就是将应用程序、配置文件和数据打包的产物,所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便,suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。

    • 在早期系统运维中,安装软件是一件非常费事费力的事情。系统管理员不得不下载软件源代码编译软件,并且为了系统做各种调整。
    • 尽管源代码编译形式的软件增强了用户定制的自由度,但是在小软件上耗费精力是缺乏效率的,于是软件包应运而生。
    • 软件包管理可以将管理员从无休止的兼容问题中释放。yum工具就可以自动搜索依赖关系,并执行安装。
    程序(软件)组成部分:
        二进制程序  可执行命令
        库     .so文件
        配置文件    .conf
        帮助文件    readme    /usr/share/man

    windows程序

    如图

    macos程序

     

    mysql-5-3-4.rpm
    redis-3-4-3.rpm
    nginx2-3-2.rpm

    RPM软件包管理器

      在 RPM(红帽软件包管理器)公布之前,要想在 Linux 系统中安装软件只能采取源码包 的方式安装。早期在 Linux 系统中安装程序是一件非常困难、耗费耐心的事情,而且大多数 的服务程序仅仅提供源代码,需要运维人员自行编译代码并解决许多的软件依赖关系,因此 要安装好一个服务程序,运维人员需要具备丰富知识、高超的技能,甚至良好的耐心。而且在 安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、 卸载、查询、升级等管理软件操作时难度都非常大。

    RPM 机制则为解决这些问题而设计的。RPM 有点像 Windows 系统中的控制面板,会建 立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。

    软件包管理器核心功能:

    • 1.制作软件包 .rpm
    • 2.安装、卸载、升级、查询、校验

    实例

    #现在要安装mysql
    #下载地址
    https://dev.mysql.com/downloads/mysql/
    安装软件的命令格式                rpm -ivh filename.rpm     # i表示安装   v显示详细过程  h以进度条显示
    升级软件的命令格式                rpm -Uvh filename.rpm
    卸载软件的命令格式                rpm -e filename.rpm
    查询软件描述信息的命令格式         rpm -qpi filename.rpm
    列出软件文件信息的命令格式         rpm -qpl filename.rpm
    查询文件属于哪个 RPM 的命令格式   rpm -qf filename

    rpm安装软件

    #下载软件包
    wget https://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
    #安装软件包
    [root@yugo /tmp 11:03:42]#rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:lrzsz-0.12.20-36.el7 ################################# [100%]

    rpm查询软件

    rpm -q lrzsz  #查询lrzsz是否安装
    rpm -qi lrzsz #查询lrzsz包的说明信息
    rpm -ql lrzsz #查询lrzsz包生成的文件列表
    rpm -qc nginx  #查询nginx安装生成后的配置文件路径
    rpm -qf /etc/nginx/fastcgi.conf  #查看这个文件由哪个rpm包安装

    rpm升级软件

    rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
    rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;

    rpm卸载软件

    rpm -e PACKAGE_NAME
    需要手动解决依赖
    不如 yum remove

    rpm的依赖问题,因此不太好用

    其一,难以删除

    [root@pyyuc /tmp 11:42:01]#rpm -e nginx
    error: Failed dependencies:
        nginx is needed by (installed) nginx-mod-mail-1:1.12.2-2.el7.x86_64
        nginx is needed by (installed) nginx-mod-http-perl-1:1.12.2-2.el7.x86_64
        nginx is needed by (installed) nginx-mod-http-xslt-filter-1:1.12.2-2.el7.x86_64
        nginx is needed by (installed) nginx-mod-http-image-filter-1:1.12.2-2.el7.x86_64
        nginx is needed by (installed) nginx-mod-stream-1:1.12.2-2.el7.x86_64
        nginx is needed by (installed) nginx-mod-http-geoip-1:1.12.2-2.el7.x86_64

    其二,难以安装

    [root@pyyuc /tmp 11:45:07]#rpm -ivh zsh-5.6.2-9.6.2.aarch64.rpm
    warning: zsh-5.6.2-9.6.2.aarch64.rpm: Header V3 RSA/SHA256 Signature, key ID 3dbdc284: NOKEY
    error: Failed dependencies:
        ld-linux-aarch64.so.1()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
        ld-linux-aarch64.so.1(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
        libdl.so.2(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
        libm.so.6(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
        libncursesw.so.6()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
        libtinfo.so.6()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64

    yum命令

    yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

    尽管 RPM 能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决, 而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。 Yum 软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum 软件仓库可以 根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安 装到系统。

    Yum 软件仓库中的 RPM 软件包可以是由红帽官方发布的,也可以是第三方发布的,当 然也可以是自己编写的。

     

    对比windows下的软件管理工具

    yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

    yum(选项)(参数)
    -h:显示帮助信息;
    -y:对所有的提问都回答“yes”;
    -c:指定配置文件;
    -q:安静模式;
    -v:详细模式;
    -d:设置调试等级(0-10);
    -e:设置错误等级(0-10);
    -R:设置yum处理一个命令的最大等待时间;
    -C:完全从缓存中运行,而不去下载或者更新任何头文件。

    实例

    部分常用的命令包括:
    
    自动搜索最快镜像插件    yum install yum-fastestmirror

    yum源配置

    什么是yum源?

      • Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
      • 说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的。yum源就相当是一个目录项,当我们使用yum机制安装软件时,若需要安装依赖软件,则yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。
      • YUM是“Yellow dog Updater, Modified”的缩写,是一个软件包管理器,YUM从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。
      • YUM的基本工作机制如下:
        服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。 
        客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

    yum源的目录

    #进入yum源目录
    cd /etc/yum.repos.d/
    #查看yum源文件
    ls -l

    配置阿里云yum源

    1.好习惯,备份yum源
    mkdir repo_bak
    mv *.repo repo_bak/
    2.下载阿里云repo文件
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    3.清空yum缓存并且生成新的yum缓存
    yum clean all
    yum makecache
    4.安装软件扩展源
    yum install -y epel-release
    yum repolist all        列出所有仓库
    yum list all            列出仓库所有软件包
    yum info 软件包名            查看软件包信息
    yum install 软件包名        安装软件包
    yum reinstall 软件包名    重新安装软件包
    yum update    软件包名        升级软件包
    yum remove    软件包名        移除软件包
    yum clean all            清楚所有仓库缓存
    yum check-update        检查可以更新的软件包
    yum grouplist            查看系统中已安装的软件包
    yum groupinstall 软件包组    安装软件包组
  • 相关阅读:
    1、PHP入门二维数组与循环
    Nginx 配置反向代理后,页面中取绝对URL地址的问题显示代理端口
    苹果手机上点击WEUI日期控件不容易点中
    ios 不支持-,-时间。
    Newtonsoft.Json添加项
    Baidu地图Map api直接加https不起作用
    腾讯云cos封装
    linux连接工具隧道模式
    微信调试工具测试时有时候复制URL没有corpid解决
    WEUI控件JS用法
  • 原文地址:https://www.cnblogs.com/bubu99/p/11582108.html
Copyright © 2011-2022 走看看