zoukankan      html  css  js  c++  java
  • Ubuntu16.04默认Python3.5升级Python3.6踩坑

      好久没更新博客了,每天还是踩坑中。今天遇到第一个问题“ImportError: No module named 'secrets'”,导包是常见问题。这次的问题导致我又重装了一次环境,不过这是一个新服务器。

      首先,分析下这个secrets库。它是一个标准库,要求是python版本>=Python3.6。那么开始升级Python:

      第一种方法:

        使用Ubuntu的PPA(Personal Package Archives个人软件包存档),实质是更改source.list进行软件的更新。这个方式第一次尝试,比较之前的升级方式简便,只需3步(ps:我没成功,看下面也许你会成功)。那就开始尝试了。

        1)添加仓库

    sudo add-apt-repository ppa:jonathonf/python-3.6
    # 若添加失败
    sudo apt-get install python-software-properties  
    sudo apt-get install software-properties-common
    
    

        2)更新软件源list

    sudo apt-get update
    # 若出现E: Failed to fetch http://ppa.launchpad.net/.....   E: Some index files failed to download. They have been ignored, or old ones used instead
    
    # 手动更新source.list
    sudo vi /etc/apt/sources.list
    # 检查下有没有ppa,有的话注释掉那一行;没有的话,加上下面的这一行
    deb http://ppa.launchpad.net/q-quark/equalx/ubuntu xenial main
    
    
    # 当然更新源列表的时候很快,可能没注意这几行报错,接着下一步安装Python3.6也会报其他错

        3)安装Python3.6

    sudo apt-get install python3.6
    
    
    # 若报错E: Unable to locate package python3.6
    # E: Couldn't find any package by glob 'python3.6'
    # E: Couldn't find any package by regex 'python3.6'
    # 当然,这是上一步更新软列表没有成功
    # 到这了,是否该放弃这种方法呢?找到了ppa的一个传送门:https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa

      第二种方法:

        使用老方法,下载安装包,编译。

        1)安装一些依赖包

    sudo apt-get install -y wget
    
    sudo apt-get install make
    
    sudo apt-get install -y gcc
    
    
    sudo wget http://www.zlib.net/zlib-1.2.11.tar.gz
    sudo tar -xzvf zlib-1.2.11.tar.gz
    cd zlib-1.2.11
    sudo ./configure
    sudo make all
    sudo make install
    cd ..
    
    
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo apt-get install -y build-essential python-dev python-setuptools python-pip python-smbus
    sudo apt-get install -y build-essential libncursesw5-dev libgdbm-dev libc6-dev
    sudo apt-get install -y zlib1g-dev libsqlite3-dev tk-dev
    sudo apt-get install -y libssl-dev openssl
    sudo apt-get install libffi-dev

        2)安装Python3.6

    sudo wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
    sudo tar -xzvf Python-3.6.5.tgz
    cd Python-3.6.5
    sudo ./configure
    sudo make all
    sudo make install

        3)创建软链

    # 移除旧的软链
    sudo rm -rf /usr/bin/python3
    sudo rm -rf /usr/bin/pip3
    
    # 创建新的,因为安装的时候没有指定安装路径,默认安装到/usr/local/bin/
    sudo ln -s /usr/local//bin/python3.6 /usr/bin/python3
    sudo ln -s /usr/local/bin/pip3.6 /usr/bin/pip3
    
    # 验证指向是否是python3.6
    python3 -V
    pip3 -V

      lsb_release问题:

      装virtualenv后,进入沙盒环境pip list(ps:沙盒环境就不需要再pip3,pip即可),报了另外个问题:subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

    # 更改该文件的shebang
    sudo vi /usr/bin/lsb_release
    # 第一行#!/usr/bin/python3 -Es 更改为#!/usr/bin/python3.6 -Es
    # 再次pip list成功

    奶思~

  • 相关阅读:
    SpringMVC与uploadify结合进行上传
    SpringMVC使用MultipartFile文件上传,多文件上传,带参数上传
    file.delete()与file.deleteOnExit(); 的区别
    快速遍历目录下所有文件名
    使用SpringMVC框架解决中文乱码的问题
    SpringCloud微服务基础
    Linux常用命令
    Linux安装软件
    MySQL 树节点递归遍历所以子节点
    微软Office Online服务安装部署(三)
  • 原文地址:https://www.cnblogs.com/NolaLi/p/12690499.html
Copyright © 2011-2022 走看看