【Linux】Ubuntu16.04配置repo

Ubuntu16.04配置repo失败

在学习韦东山Linux嵌入式开发过程中,使用repo获取内核及工具链:

git clone https://e.coding.net/codebug8/repo.git

mkdir -p 100ask_imx6ull-sdk && cd 100ask_imx6ull-sdk

../repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml --no-repo-verify

../repo/repo sync -j4

结果失败,错误提示:

repo: warning: Python 2 is no longer supported; Please upgrade to Python 3.6+.

No module named requests

找到repo文件夹,打开repo文件,我的repo文件夹在家目录:

vim ~/repo/repo
def check_python_version():
  """Make sure the active Python version is recent enough."""
  def reexec(prog):
    exec_command([prog] + sys.argv)
 
  MIN_PYTHON_VERSION = (3, 6)
 
  ver = sys.version_info
  major = ver.major
  minor = ver.minor

原因分析:

Ubuntu16系统自带python2.7和python3.5,默认的python版本是python2.7,且没有装requests。而repo init时指定的repo仓库里的脚本需要python3.6版本解释器,那在repo init运行的时候肯定会出问题。

python --version   #查看python默认版本

python2 --version   #查看python2安装版本

python3 --version   #查看python3安装版本

python3.5 --version   #查看python3.5安装版本

python3.8 --version   #查看python3.8安装版本

记住这里用 pip install requests 也并没有什么用,因为ubuntu16.04 默认的python版本就是 python2.7 和 python3.5,pip还是会将包安装到默认的python版本下,导致出现问题。


请注意,根据别人的血泪经验,系统自带的python千万不能卸载!正确做法,安装高版本的python,这里我选择直接安装python3.8。 参考链接:

ubuntu下repo遇到的环境问题




Ubuntu16.04下完美安装python高版本及对应版本的pip

方法一:直接用命令安装python3.6(但我没安装成功)

好像是因为Ubuntu16.04的软件仓库(源)中python的最高版本就是python3.5,所以无法直接用apt来安装

#方法一
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6
#方法二
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

参考链接:
ubuntu16.04,卸载系统自带的python3.5引发了一宗惨案,好在最终完美解决

Ubuntu16.04下完美安装python3.6.x(以3.6.9为例)及对应版本的pip


方法二:用源码安装,这里装python3.8.11
 wget https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz
#解压,用xfz命令,不推荐用-zxvf 权限问题,不深究
tar xfz Python-3.8.11.tgz
cd Python-3.8.11
./configure --with-ssl
make
sudo make install

注意:python3.8.11会自动安装到/usr/local/bin下,你可以用update-alternatives来控制python版本,好用!

在python3.6安装好后,你还需要安装对应版本的pip。可以采用如下指令查看python版本对应的pip有没有安装

pip -V

pip2 -V
pip3 -V
pip3.8 -V
pip3.5 -V

如果安装了:

pip 21.1.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

如果没有安装,可以采用如下指令。不行的话,就百度查查,不难。

sudo apt-get install python3-pip #装pip3

或者

sudo apt install -y python3-pip

这是一个Linux命令,它的作用是安装Python 3的包管理工具pip。其中,sudo是Linux中的一个命令,用于以超级管理员身份来执行某个命令。apt是Ubuntu和Debian等Linux发行版中用于管理软件包的工具。install是apt的一个子命令,用于安装软件包。-y参数表示在安装时不需要人工确认。在这里,我们通过使用apt来安装Python 3的包管理工具pip,以便在之后使用pip来安装Python包。

apt 和 apt-get功能差不多。在专业人士看来,选择apt 是值得的,因为它提供了软件包管理的所有必需功能,并且更快,更友好且易于使用。




使用 update-alternatives设置python优先级

update-alternatives 本质上就是管理软链接,但提供了更规范安全的操作接口。这里只是为了建一个简单的版本管理,只需要用到一两个指令,其他功能不予深究。
首先,看一下是不是已经配置过了:

sudo update-alternatives --config python

以上指令中,sudo 是因为涉及到配置 /usr/bin 下的软链接,需要 sudo 权限;
–config 后跟所谓的服务名,此处即 python,也就是你配置的这一套版本管理的指代名称

如果显示“无候选项”,或者不完善,说明在“python”的这个版本系列里,你还没有设置优先级。优先级示例设置:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2

以上指令中,
/usr/bin/python 是要创建的软链接的名字,是几个版本共用的;
后面的 python 即服务名,添加的版本会加入到名叫“python”的这个版本系列里,如果之前不存在(“无候选项”)则创建;
接下来的 /usr/bin/python2 就是软件的实际位置
最后的数字是优先级,后续可以选择自动模式和手动模式,自动模式下就会自动选择优先级值最大的一个版本。


注意,我的python3.8.11会被安装到/usr/local/bin下,因此正确做法如下:

调整Python3的优先级,使得3.8优先级较高

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1 

sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.8 2

现在系统python默认为Python2,需要修改为Python3

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

结果查询:

在这里插入图片描述

在这里插入图片描述

参考链接:
ubuntu16.04安装python3




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/144940.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云标准型S5服务器五年优惠价格表(4核8G和2核4G)

腾讯云服务器网整理五年云服务器优惠活动 txyfwq.com/go/txy 配置可选2核4G和4核8G,公网带宽可选1M、3M或5M,系统盘为50G高性能云硬盘,标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,…

3. 【自动驾驶和机器人中的SLAM技术】实现基于预积分和图优化的GNSS+IMU+Odom的融合定位系统

目录 1. 公式推导2. GNSSIMUOdom融合定位3. 利用数值求导工具,验证本书实验中的雅可比矩阵的正确性4. 也欢迎大家来我公众号读书--“过千帆” 1. 公式推导 2. GNSSIMUOdom融合定位 程序实现以及运行效果: ①首先是在预积分程序中记录了预积分积累的IMU数…

智安网络|探索语音识别技术:优势与挑战的全面解析

语音识别技术是人工智能领域的重要应用之一,它通过将语音信号转化为文本,实现了人机交互的一种新形式。随着科技的不断发展,语音识别技术在各个行业中得到了广泛的应用,但同时也存在着一些优势和劣势。 首先,语音识别…

环保气膜建筑的运维成本在哪几个方面

作为一种环保建筑,气膜结构在工业和文体领域得到了广泛认可。尽管气膜建筑在经济上具有明显的优势,但对于不了解它的人来说,他们可能会下意识地认为在运营和维护过程中会产生大量费用。今天,让我们一起了解一下气膜建筑在运营维护…

MHA实验

MHA: 什么是MHA masterhigh availabulity :基于主库的高可用环境下:主从复制,故障切换 主从的架构: MHA:最少要一主两从 mysql的单点故障问题,一旦主库崩溃,MHA可以在0-30秒内可以自动完成故障切换 M…

创作者焦点:Royal Flushed(第二章)

一起来看看「Dr. Bomkus 的试炼」幕后的创作故事吧~ 「创作者焦点」系列报道将带来六篇关于「Dr. Bomkus 的试炼」游戏的创作过程,以及其独特的游戏玩法和功能。 屏住呼吸,潜入沉没区。穿过 Bomkus 设计的水下迷宫,回到地面上&…

为什么重写equals方法必须重写hashcode方法

在Java中,重写equals()方法的同时也应该重写hashCode()方法,这是因为这两个方法在 Java 中是有关联的,而且它们一起影响着集合类的行为。 Java中的hashCode()方法用于返回对象的哈希码,而equals()方法用于比较两个对象是否相等。…

Techgen ict 转 qrcTechFile问题整理

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 ERROR (EXTZTECH-157) : Density value need to increase monotonically . 根据提示定位到ict的以下内容: resistivity 0.231 106.5192 ... ... 1.9 81.3252 根据错误提示我…

中电金信:语言服务解决方案

​​ ​​ 点击或扫描下图二维码,查看更多相关内容 ​​ ​​ ​​ ​​ 01方案概述 我们以成熟的语言服务能力为核心,围绕出海企业的需求,构建覆盖企业出海全生命周期的语言服务。我们在全球31个城市设有交付中心,可以为出海…

MDM9205开发环境搭建与编译调试

前言 如题,这篇文章说的是高通mdm9205这颗物联网芯片,从官方资源的获取(包括文档、代码、软件工具等等)到如何编译出可运行固件的方法。 对经历了不止一次这颗芯片开发的我来说,在过程中遇到问题,除了寄希望于可能在工作日第二天凌晨得到的case回复,有一篇最新的有指导方…

Vue3中的 ref() 为何需要 .value ?

前言 本文是 Vue3 源码实战专栏的第 7 篇,从 0-1 实现 ref 功能函数。 官方文档 中对ref的定义, 接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value。 老规矩还是从单测入手&…

Failed to restart network.service: Unit network.service not found.

执行systemctl restart network命令,报错Failed to restart network.service: Unit network.service not found. 执行 yum install network-scripts命令 再次执行,正常

计算机视觉基础(6)——光流估计

前言 本章我们来学习一下图像处理基础中的运动估计。主要内容包括运动场估计和光流估计两个部分。在运动场估计中,我们将学习到运动场、光流、光流和运动场的区别;在光流估计中,我们将学习到光流估计任务、孔径问题,以及光流估计两…

μC/OS-II---计时器管理1(os_tmr.c)

目录 创建一个计时器重新启动一个计时器停止一个计时器删除一个计时器 计时器是倒计时器,当计数器达到零时执行某个动作。用户通过回调函数提供这个动作。回调函数是用户声明的函数,在计时器到期时被调用。在回调函数中绝对不能进行阻塞调用(…

腾讯云五年服务器CVM和三年轻量应用服务器选哪个?

腾讯云3年轻量和5年云服务器CVM优惠活动入口,3年轻量应用服务器配置可选2核2G4M和2核4G5M带宽,5年CVM云服务器可以选择2核4G和4核8G配置可选,阿腾云atengyun.com分享腾讯云3年轻量应用服务器和5年云服务器CVM优惠活动入口和配置报价&#xff…

【STM32单片机】比赛计时计分系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用OLED显示模块、矩阵按键模块、蜂鸣器等。 主要功能: 系统运行后,OLED默认显示第1节次比赛时间、AB得分。默认是12分钟倒计时…

机器学习6:逻辑回归

假设我们有一个二元分类问题,有两个特征(x1, x2)和对应的类别标签(y)。给定 以下训练数据集: 我们定义逻辑回归模型的假设函数和损失函数。假设函数使用 sigmoid 函 数来将线性函数的输出转换为概率值&…

Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】

Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】跳转Java之SpringCloud Alibaba【二】【微服务调用组件Feign】跳转Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】跳转Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】跳转Java之Sprin…

【2014年数据结构真题】

41. (13分)二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。 给定一棵二叉树T,采用二叉链表存储,结点结构如下: 其中叶结点的weight域保存该结点的非负权值。 设root为指向T的根结点的指针, 请设计求T 的WPL…

抖音电商的野心,中小商家的风口

文丨新熔财经 作者丨寒蝉鸣 反向消费的大浪潮,不会辜负任何一个抓住风口的平台。过去是拼多多,如今是唯品会。 靠着响应新时代消费者对“质价比”的需求,消失在大众视线许久的唯品会,不仅守住了电商老前辈的行业地位&#xff0…