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. # 若报错E: Unable to locate package python3.
# E: Couldn't find any package by glob 'python3.'
# E: Couldn't find any package by regex 'python3.'
# 当然,这是上一步更新软列表没有成功
# 到这了,是否该放弃这种方法呢?找到了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..tar.gz
cd zlib-1.2.
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..tgz
cd Python-3.6.
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. /usr/bin/pip3 # 验证指向是否是python3.
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. -Es
# 再次pip list成功
奶思~
Ubuntu16.04默认Python3.5升级Python3.6踩坑的更多相关文章
- 神舟+win10+ubuntu16.04+256GSSD+1THHD双系统安装加openssl踩坑之旅
上海最近搞活动调休,要搞深度学习,win上还是不方便,准备弄个ubuntu.于是有以下回忆文字. 在机器上装了个双系统.花了两天.再也不想玩了. 准备用ubuntu来做深度学习的. 本文写于2019年 ...
- SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制
SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制 前言 LZ最近升级SpringBoo框架到2.1.6,踩了一些坑,这里介绍的是文件上传大小限制. 升级前 #文件上传配置 ...
- ubuntu tensorflow install(Ubuntu16.04+CUDA9.0+cuDNN7.5+Python3.6+TensorFlow1.5)
在网上找了很多案例,踩了许多坑,感觉比较全面的是下面介绍的 http://www.cnblogs.com/xuliangxing/p/7575586.html 先说说我的步骤: 首先安装了Anacod ...
- Ubuntu16.04上使用Anaconda3的Python3.6的pip安装UWSGI报错解决办法
具体报错信息: lto1: fatal error: bytecode stream generated with LTO version 6.0 instead of the expected 4. ...
- 修改Ubuntu16.04默认主题标题栏的颜色
默认主题为Ambiance: sudo gedit /usr/share/themes/Ambiance/gtk-3.0/gtk-main.css 将: @define-color dark_bg_c ...
- tensorflow 1.8, ubuntu 16.04, cuda 9.0, nvidia-390,安装踩坑指南。
被tensorflow 1.8, ubuntu 16.04, cuda 9.0, nvidia-390折磨了5天,终于上坑,留下指南,造福后人. 1.先把依赖搞清楚: tensorflow 1.8依赖 ...
- mysql升级的一些踩坑点
升级的方法一般有两类: 1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法最省事也最保险 缺点:大库的mysqldump费时费力. 2.直接替换掉 mysql 的安装目录和 my. ...
- android开发导包升级到androidx踩坑记录【转载】
最近一直在做安卓开发,奈何手中的资料比较老,资料上的一些Import经常没有,十分让人头疼. 感谢简书上的[张晴天天天天天]做的整理. 在这里也记录一下备用. 升级Android Studio后,在 ...
- ubuntu16.04下python2、python3环境选择与python升级(pip版本切换)
参考链接:https://www.jianshu.com/p/63c1f22e1fed Ubuntu中python版本问题: 添加PPA: sudo add-apt-repository ppa:jo ...
随机推荐
- 有了这套微信小程序x5调试,调试一些简单的开发者工具调试不了的功能不成问题!!!!
1.首先我们需要打开微信 TBS 调试 地址是:http://debugx5.qq.com 2.然后打开手机 打开开发者模式,打开 USB 调试 3.然后 在谷歌浏览器地址栏输入 chrome://i ...
- 深入理解yield from语法
本文目录 为什么要使用协程 yield from的用法详解 为什么要使用yield from . 为什么要使用协程# 在上一篇中,我们从生成器的基本认识与使用,成功过渡到了协程. 但一定有许多人,只知 ...
- python 异步MySQL存库
对于异步框架而言,这些延迟是无法接受的.因此, Twisted 提供了 twisted.enterprise.adbapi, 遵循DB-API 2.0协议的一个异步封装. adbapi 在单独的线程里 ...
- C++ 随机函数/伪随机函数
使用rand()函数时,每次随机数都是固定(伪随机数),在前面加上以下函数,每次生成的随机数为随机, srand((int)time(NULL)); rand();
- .NET Conf: Xamarin专场会议3.23 开幕
聚焦于 Xamarin 的 NET Conf 是一项免费的为期一天的直播活动,来自社区和.NET产品团队的演讲者正在使用Xamarin技术构建本机移动应用程序!Xamarin允许您使用C#(而不是Ja ...
- go源码分析(三) 使用go http包开发web时遇到的坑之卸载插件,重启插件管理,仍然可以访问已经卸载的插件
问题描述: web页面下发重启指令后,对卸载插件的处理不完整(虽然列表已经没有插件描述,但是在HandleFunc的路由列表中依然存在) 我们需要清空路由列表map 路由列表结构见代码: net/ht ...
- Google Sign In
我们平常也经常使用QQ,微信账号,登录其他应用.最近公司让我给网站添加一个谷歌账号登录.我来这里记录一下,莫怪~~~莫怪~~~ 1. 申请一个账号登录ID: https://developers.g ...
- Spring集成axis2
1.新建一个项目,结构如下 2.引入项目所需jar包 axis相关jar文件说明请查阅该博文 3.配置web.xml,注册axis2信息 <?xml version="1.0" ...
- Ruby中的Hash(哈希),你可以理解为字典
原文链接 以下代码在Ruby 2.5.1中编译通过 定义 myHash = Hash.new myHash1 = Hash["key1" => 100, "key2 ...
- bash中的if条件语句报错[: missing `]'
这是我的一个小demo #!/bin/bash read -p "请输入3个数:" n1 n2 n3 if [ $n1 -gt $n2 ] && [ $n1 -gt ...