您的位置:首页 > 运维架构 > Linux

Centos7环境下安装python3以及相关问题总结

2018-11-28 01:52 441 查看

一、前言

centos7自带python2.7.5版本,但需要使用的python3的瓜瓜们就需要自己安装一个python3的环境。温馨提示尽量不要动系统自带的python,否则会带来不可预知的后果,至于是什么样的后果,想知道的同学可以以身试法,然后给各位博友们上图为证。(PS:可以在docker上开一个centos容器来验证一下)

二、步骤

  • 源码安装python3 下载二进制文件
  • 解压
  • 配置安装路径
  • 编译&&安装
  • 添加环境变量
  • 使用virtualenv虚拟环境
      目的: 为了隔离python2和python3,更好的管理对应python版本的依赖
    • 给每个项目创建虚拟环境,独立管理各项目的依赖,互不干扰独立工作
  • 安装virtualenv
  • 安装virtualenvwrapper
  • 三、详细安装过程

    1、 安装python3.6

    • 安装前准备环境

      yum -y install zlib zlib-devel gcc
      yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

      下载二进制文件(我安装的版本是python3.6.4)

      yum -y install zlib zlib-devel gcc
      wget --no-check-certificate https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

      安装其他版本只需要修改url中的版本数字即可,如:

      wget --no-check-certificate https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

    • 解压&&配置安装路径

      tar -zxvf Python-3.6.4.tar.xz
      cd Python-3.6.4/
      ./configure --prefix=/usr/local/python3 --enable-optimizations
      make && make install
    • 添加永久环境变量

      /etc/profile
      中添加以下内容:
      export PATH="$PATH:/usr/local/python3/bin"
  • 永久添加环境变量
      vi /etc/profile
      然后写入
      export PATH="$PATH:/usr/local/python3/bin"
    • 或者使用命令
      echo "export PATH=${PATH}:/usr/local/python3/bin" >> /etc/profile
      写入
  • 添加完成后
    source /etc/profile
    ,使变量生效
  • 临时添加环境变量为
    export PATH="$PATH:/usr/local/python3/bin"
    终端结束后环境变量失效
  • 2、使用python3打开python3 shell环境

    • 修改/usr/bin/python3链接

      # ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
      # ln -sv /usr/local/python3/bin/pip3 /usr/bin/pip3
    • 到此为止,在终端输入python可以打开python2.x,python3打开python3.x。pip3可用,pip不可用。可以使用

      pip3 -V
      查看版本,pip python2的版本在下一节centos7安装pip中介绍。

    • 以下部分的内容,如果不想使用python命令打开python3的shell可以忽略

    3、使用python打开python3

    • 修改

      /usr/bin/python
      链接,使得可以使用
      python
      打开
      python3

      # cd/usr/bin
      # mv python python.bak
      # ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
    • 将python2.7修改成python3后,yum命令会报错(如果解决办法中的两个步骤没完成的话,安装pip的时候会报错!)

      yum报错:
    • File "/usr/bin/yum", line 30
      except KeyboardInterrupt, e:
      ^
      SyntaxError: invalid syntax
    • pip报错:
      bash: pip: command not found
  • 解决办法:

      修改yum配置文件,将python版本指向以前的旧版本

      输入

      # vi /usr/bin/yum
      ,进入yum文件中,把
      #!/usr/bin/python
      修改成
      #!/usr/bin/python2.7

    • 修改urlgrabber-ext-down文件,更改python版本
      输入

      # vi /usr/libexec/urlgrabber-ext-down
      ,进入文件中把
      #!/usr/bin/python
      修改成
      #!/usr/bin/python2.7

    • 或者将pip软连接到pip3(pip,pip3使用的都是pip3):

      ln -sv /usr/local/python3/bin/pip3 /usr/bin/pip
  • 重新安装pip

    yum -y install epel-release
    (pip对应python2,pip3对应python3)

      执行成功之后,再次执行
      yum install python-pip
    • 对安装好的pip进行升级 pip install --upgrade pip (注意是两个短杆)

    四、 安装pip工具

    • yum -y install epel-release
    • 执行成功之后,再次执行
      yum install python-pip
    • 对安装好的pip进行升级 pip install --upgrade pip (注意是两个短杆)
      注意: 以上是python2.7的pip,python3 的/usr/bin 目录下有pip3创建pip3的软链接即可
    • ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    • 配置完成后pip、pip3均可用

    3、 -bash: /usr/bin/yum: /usr/bin/python: 坏的解释器: 没有那个文件或目录

    将 /usr/bin/yum 和 /usr/libexec/urlgrabber-ext-down 文件的首行 #! /usr/bin/python 改为 #! /usr/bin/python.bak
    /usr/bin/yum和/usr/libexec/urlgrabber-ext-down文件的首行的Python应指向Python2.7.5版本的位置
    在我的环境中“#! /usr/bin/python.bak”是我的Python2.7.5的位置。

    五、使用python虚拟环境

    1. 安装

      pip install virtualenv

    2. 创建

        virtualenv 名称
        创建默认版本的虚拟环境
      • virtualenv --python=/usr/local/python3/bin/python3.6 myvenv
    3. 启动

        source /myvenv/bin/activate
    4. 退出

        deactivate
    5. 安装virtualenvwrapper

        pip install virtualenvwrapper
      • windows环境下:
        pip install virtualenvwrapper-win
    6. 配置virtualenvwrapper环境变量

        vim ~/.bashrc
        打开文件,写入

        export WORKON_HOME=~/.virtualenvs
        source /usr/local/python3/bin/virtualenvwrapper.sh
      • source ~/.bashrc

    7. 使用mkvirtualenv 创建虚拟环境

        mkvirtualenv test2

      • 第一次安装完成后需要,先设置一个变量

        WORKON_HOME
        ,它将作为所有环境的前缀,并且
        source /usr/local/bin/virtualenvwrapper.sh

        mkdir -p $WORKON_HOME
        export WORKON_HOME=~/Envs
        source /usr/local/bin/virtualenvwrapper.sh
      • **注意:**同时安装了python2.7跟python3.6创建虚拟环境时有可能报错,则手动进入python3.6的安装路径/bin下,执行

        source virtualwrapper.sh
        ,然后创建

    8. virtualenvwrapper其他操作

        创建环境 默认版本环境
        mkvirtualenv env1
      • 指定版本环境
        mkvirtualenv --python=/usr/local/python3/bin/python3.6 myvenv
    9. 切换环境
        workon env1
      • workon env2
    10. 列出已有环境
        workon
    11. 退出环境
        deactivate
    12. 创建project:项目将创建到PROJECT_HOME目录下,实际上相当于在某个目录下,建了一个环境。

        mkproject
      • 注意: 该命令要在
        ~/.bashrc
        中写入
        export PROJECT_HOME=xxx
        才生效
    13. 环境迁移:

        pip freeze >requirments.txt
      • pip install -r requirements.txt
    14. 在docker中安装python3,存在以下报错

        vi ~/.bashrc
        写入以下内容

        export WORKON_HOME=~/Envs
        VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
        VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv
        source /usr/bin/virtualenvwrapper.sh
      • 错误信息:

        ERROR: virtualenvwrapper could not find virtualenv in your path

        出现这种错误,是因为 virtualenv 这个基础依赖包被安装在默认 Python 目录下,就需要做一个软连接 ln -s

      • 直接在

        ~/.bashrc
        文件中加入以下配置

        export WORKON_HOME=~/Envs
        VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
        VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv
        source /usr/bin/virtualenvwrapper.sh
      • 出现以上错误时,在shell输入

        /usr/bin/virtualenv
        ,如果没有报错,则不是软连接的问题

        yum -y install which
        安装which后,
        mkvirtualenv
        命令可以正常使用
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: