zoukankan      html  css  js  c++  java
  • 环境准备—之—linux下安装python3和pip3

    转自 上海悠悠 https://www.cnblogs.com/yoyoketang/p/10195102.html

    前言

    centos7 自带有 python,但是却是 python2 版本的 python,如果你想安装个python3怎么办呢?
    如果直接删除python2的话,可能会引起其他的问题,因为有些东西是依赖python2的,最好的解决办法是python3和python2共存,新安装一个python3的环境。

    查看python状态

    [root@bogon ~]# cd /   #先回到根目录
    [root@bogon /]# whereis python   #查看python所在目录(/usr/bin下)
    python: /usr/bin/python2.7 /usr/bin/python /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
    [root@bogon /]# cd /usr/bin     #切到python目录
    [root@bogon bin]# ll python*  #查看python开头的相关文件详情
    lrwxrwxrwx. 1 root root    7 2月   4 16:28 python -> python2
    lrwxrwxrwx. 1 root root    9 2月   4 16:28 python2 -> python2.7
    -rwxr-xr-x. 1 root root 7216 4月  11 2018 python2.7
    [root@bogon bin]# 

    从查看的结果可以看到python指向的是python2 ,python2指向的是python2.7。那也就是在控制台输入python、python2、python2.7都是运行python2.7

    如果我们安装一个python3.6的环境,让python指向3.6, python2指向python2.7, 那就可以完美的共存了

    准备安装python3

    安装python3.6之前,先备份python包,因为一会要替换这个文件

    [root@bogon bin]# mv python python.bak  #本步骤,执行的命令
    以下为查看结果
    [root@bogon bin]# ll python*   #只是查看执行的结果
    lrwxrwxrwx. 1 root root    9 2月   4 16:28 python2 -> python2.7
    -rwxr-xr-x. 1 root root 7216 4月  11 2018 python2.7
    lrwxrwxrwx. 1 root root    7 2月   4 16:28 python.bak -> python2

    yum配置

    yum是依赖于python2的,所以需要更改yum里面的python指向,vim打开 /usr/bin/yum

    [root@bogon Python-3.6.8]# vim /usr/bin/yum
    #! /usr/bin/python修改为#! /usr/bin/python2
    打开后输入键盘上i键,进入编辑状态,把第一行#! /usr/bin/python修改为#! /usr/bin/python2
    

    编辑完之后,按ESC返回,输入:wq保存退出

    接着vim打开/usr/libexec/urlgrabber-ext-down

    [root@bogon Python-3.6.8]# vim /usr/libexec/urlgrabber-ext-down
    #! /usr/bin/python 修改为#! /usr/bin/python2

    下载安装包

    从python安装包的历史版本中https://www.python.org/ftp/python/,找到需要的安装包,比如我这里选3.6.8版本

    从众多的包里面找到Python-3.6.8.tgz包,那么下载地址拼接下就是:https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

    在Centos 7系统里面新建一个目录,用于存放下载的python3安装包,比如:/usr/local/python3

    [root@bogon bin]# mkdir /usr/local/python3

    cd到 /usr/local/python3目录,用wget下载3.6.8安装包

    [root@bogon python3]# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
    以下为下载过程:100%为下载完成
    --2019-02-05 22:16:30--  https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
    正在解析主机 www.python.org (www.python.org)... 151.101.24.223, 2a04:4e42:2e::223
    正在连接 www.python.org (www.python.org)|151.101.24.223|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:23010188 (22M) [application/octet-stream]
    正在保存至: “Python-3.6.8.tgz”
    
    100%[=========================================================================>] 23,010,188  2.08MB/s 用时 76s    
    
    2019-02-05 22:17:47 (297 KB/s) - 已保存 “Python-3.6.8.tgz” [23010188/23010188])

            wget命令使用请查看:https://www.cnblogs.com/cindy-cindy/p/6847502.html----------这与安装无关

    解压tgz包

     等待下载完成之后会在当前目录下出现一个tgz包,tar命令解压这个包到当前目录就可以

    [root@bogon python3]# tar -xvf Python-3.6.8.tgz
    解压完成后,会多一个
    [root@bogon python3]# ll
    总用量 22476
    drwxr-xr-x. 17  501  501     4096 12月 24 11:01 Python-3.6.8
    -rw-r--r--.  1 root root 23010188 12月 24 11:01 Python-3.6.8.tgz

    指定安装目录

    解压完之后需要编译Python-3.6.8包下的文件,先cd过去执行完这句命令之后,把python的安装目录指定一下,这样的话,里面的一些bin目录、lib目录就都会存放在这个目录下面。
    如果不指定这个安装目录的话,最后python的安装文件将分散到linux的默认目录,不在一块。我们指定安装目录,以后卸载的话直接删除目录就可以干净卸载了。

    [root@bogon python3]# cd Python-3.6.8
    [root@bogon Python-3.6.8]# ./configure --prefix=/usr/local/python3Dir

              在此处被坑不知道使用这个命令会如何     ./configure --prefix=/usr/local/python3Dir --with-ssl

    又是不行,报错

    #不报错的话没有这些
    [root@bogon Python-3.6.8]# ./configure --prefix=/usr/local/python3Dir checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for python3.6... no checking for python3... no checking for python... no checking for --enable-universalsdk... no checking for --with-universal-archs... no checking MACHDEP... linux checking for --without-gcc... no checking for --with-icc... no checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/usr/local/python3/Python-3.6.8': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details [root@bogon Python-3.6.8]# cd .. [root@bogon python3]# ./configure --prefix=/usr/local/python3Dir -bash: ./configure: 没有那个文件或目录

             经百度,查看是缺少gcc插件,需要执行 yum install gcc命令,  问题详见 https://blog.csdn.net/duguduchong/article/details/8699774

    执行下面之前,先看下这个 https://www.cnblogs.com/minglee/p/9232673.html

    sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel 

    安装make

    接着之前的搞,在当前目录/usr/local/python3/Python-3.6.8执行make,执行完之后,接着输入make install

    [root@bogon Python-3.6.8]# make  # 执行时间还挺长的
    [root@bogon Python-3.6.8]# make install  #执行这个命令之后出现 python3Dir 目录
    Traceback (most recent call last):
    File "/usr/local/python3/Python-3.6.8/Lib/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
    File "/usr/local/python3/Python-3.6.8/Lib/runpy.py", line 85, in _run_code
    exec(code, run_globals)
    File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
    File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
    File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
    File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
    zipimport.ZipImportError: can't decompress data; zlib not available #-------不晓得这个错误有没有影响,zipimport。ZipImportError:无法解压数据;zlib不可用
    make: *** [install] 错误 1
    [root@bogon Python-3.6.8]#  #看样子是pip的问题,

           缺少zlib依赖包,请看这里  https://blog.csdn.net/u014749862/article/details/54430022/

    yum -y install zlib*

    正常 make install 截图

    做个插入,这里有个问题?!!!

    Python命令行下退格、删除、方向键乱码问题解决(亲测有效)https://blog.csdn.net/robin_star_/article/details/78774004

    出现原因:readline模块没有安装

    # 安装readline模块
    
    yum -y install readline-devel
    
    # 进入Python安装目录
    
    cd /usr/local/python3/Python-3.6.8
    
    # 重新执行Python的安装
    
    make && make install

     安装完成

    执行完毕之后,我们就可以切换到 /usr/local/python3Dir 目录下去查看,python3.6在bin目录

    [root@bogon Python-3.6.8]# cd /usr/local/python3Dir
    [root@bogon python3Dir]# ls 
    bin  include  lib  share
    [root@bogon python3Dir]# cd bin
    [root@bogon bin]# ls
    2to3      idle3    pydoc3    python3    python3.6-config  python3.6m-config  pyvenv
    2to3-3.6  idle3.6  pydoc3.6  python3.6  python3.6m        python3-config     pyvenv-3.6

    添加软链接

    由于系统默认的python是指向python2,前面已经删除备份过了,这里执行把新安装的python3.6指向给/usr/bin/pythonn就可以了

    [root@bogon bin]# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python
    [root@bogon bin]# python -V
    Python 3.6.8
    [root@bogon bin]# python
    Python 3.6.8 (default, Feb  5 2019, 22:52:11) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    
    #输入python -V可以看到版本号,这样系统默认的就是python3.6.8版本了,如果想用python2.7版本,直接输入python2就可以了
    [root@bogon bin]# python2
    Python 2.7.5 (default, Apr 11 2018, 07:36:10) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    [1]+  已停止               python2

    pip环境

    python3安装完成之后,如果想用pip安装一些第三方包,系统会默认安装到python2的环境里面。为了能够使用pip安装到python3的环境,可以下载pip安装包,添加软链接。

    • 先cd到/usr/bin
    • mv备份pip
    • 添加python3Dir安装目录里面的pip3软链接
    • 查看pip -V 和pip2 -V
    • 查看所有的pip
    [root@bogon bin]# pip
    bash: pip: 未找到命令...
    [root@bogon bin]# whereis pip
    pip:[root@bogon bin]# 
    [root@bogon bin]# 
    [root@bogon bin]# cd /usr/bin
    [root@bogon bin]# pwd
    /usr/bin
    [root@bogon bin]# ll pip*
    ls: 无法访问pip*: 没有那个文件或目录
    [root@bogon bin]# ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip   #这里直接执行这个即可
    [root@bogon bin]# ll pip*
    lrwxrwxrwx. 1 root root 27 2月   5 23:09 pip -> /usr/local/python3/bin/pip3

    我这里并没有pip的命令,故直接执行了这一个命令即可

    ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip

    (本次尝试失败,应该就是上面安装的时候报错的原因,暂时先这样了)

    python其他快捷键(pytest、django-admin这些)

    问题描述:

    在安装完上述,python 和  pip 环境后,在linux命令行下直接执行 pytest 命令时,报错:没有发现此命令

    解决办法一:

    在pytest前,加  python -m ;    python -m 的意思就是说,使用python 下的 模块的命令

    比如:运行pytest使用:python -m pytest (+其他参数)     #使用python下pytest相关命令,下同

         运行django相关:python -m django-admin (+其他参数)

       上述 pip的命令也可以这样实现,pip  也是python下的一个模块

    解决办法二:

    就是同上面的pip命令,来创建软连接,来实现直接在命令行 运行相关命令

    ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip

    问题解决

    1.解决了上面的zlib问题, pip已经安装成功,可是一波刚平,一波又起风云,如下图

    暂时以这两篇文章,为准吧, ./configure --prefix=/usr/local/python3Dir --with-ssl

    https://blog.csdn.net/zhengcaihua0/article/details/79681991 主要以这个为准,

    1. 查看openssl安装包,发现缺少openssl-devel包 
    [root@localhost ~]# rpm -aq|grep openssl 
    openssl-0.9.8e-20.el5 
    openssl-0.9.8e-20.el5 
    [root@localhost ~]#
    
    2.yum安装openssl-devel 
    [root@localhost ~]# yum install openssl-devel -y 
    查看安装结果 
    [root@localhost ~]# rpm -aq|grep openssl 
    openssl-0.9.8e-26.el5_9.1 
    openssl-0.9.8e-26.el5_9.1 
    openssl-devel-0.9.8e-26.el5_9.1 
    openssl-devel-0.9.8e-26.el5_9.1
    
    3.重新对python3.6进行编译安装,用一下过程来实现编译安装:
    
    cd Python-3.6.4
    ./configure --with-ssl
    make
    sudo make install 

    不在报错,那就ok了

    https://blog.csdn.net/jeryjeryjery/article/details/77880227   这个作为了解吧

  • 相关阅读:
    echars柱状图修改每条柱的颜色
    vue打开到新页面,并传递参数
    彻底了解websocket原理
    bind和on的区别
    Vue如何更新子组件
    Vue父子组件生命过程
    使用css3实现动画来开启GPU加速
    前端技术体系
    Vue中的~(静态资源处理)
    垂直居中的办法小结
  • 原文地址:https://www.cnblogs.com/wsy1103/p/10353217.html
Copyright © 2011-2022 走看看