Linux下多版本python共存时,默认执行路径修改方法

Stella981
• 阅读 969

遇到的问题和环境是这样:首先workspace上存在一个Python2.7和一个Python3.5,其中Python3.5是理想的运行环境,有很多自定义模块,运行代码时需要这个环境。原本默认是在这个环境下跑的,后来安装了一个叫miniconda3的东西,里面自带一个Python3.7环境,于是问题来了,所有执行程序全部变成了使用这个新的Python3.7环境来跑,这个新环境没有安装和适配需要的模块,导致程序全部报错。

现在要做的是将环境从Python3.7改回原来的Python3.5。
通过which python得知当前bash里默认跑的Python环境的路径位置。

我们得知,每个程序在跑的时候会根据~/.bashrc 或 ~/.zshrc中的脚本配置的路径来按顺序寻找可能的路径。也就是说你通过 export方法https://blog.csdn.net/Kevinhanser/article/details/79352109来更新你的环境变量时,是即时有效的,这个方法可以立即解决你某个程序环境错误的问题,立即使用你想要的环境(当然你要知道你需要的环境的正确路径才能加到PATH中)

当然还有别的方法一劳永逸的更改环境变量,你可以将你需要的正确路径写入~/.bashrc 中,当然这个文件你肯定不陌生,里面添加了各种程序的PATH以及某些自定义的缩写。PATH的组成形式类似字符串的+=,他会将某个路径,如PATH=/home/tuotu/bin:$PATH的方式,不断延长这个字符串,这个串以:为分隔符,每次按顺序便利该串的每一个路径,遇到能用的就会使用这个路径指向的环境。当然你也可以反过来写,$PATH 写新路径的前面。这样相当于将新路经的位置放在了相对后面的位置。如过各个路径所使用的环境不冲突的话当然无所谓,但是此处是多个Python的存在,语法都差不多,只是内容不一样了,所以要严格区分。目前的情况是miniconda3中Python3.7的路径被放到了PATH中相对较前的位置。为了解决这个问题,我们应该把正确的路径放到Python3.7的前面,使系统先遍历到这个路径,而不是Python3.7.

之后我更改了路径,无意中在~/.bashrc把正确的路径放到了miniconda3的PATH之前,这导致我设定的路径直接“无效”,因为这毕竟是一个脚本,按顺序执行,先将正确的路径放到了前面,后面就会被错误路径盖住,导致正确路径失效,错误路径被读入且使用。所以编辑脚本的好习惯还是将最新的最需要的PATH放到脚本的末尾部分~问题解决

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Hadoop streaming使用自定义python版本和第三方库
在使用Hadoop的过程中,遇到了自带python版本比较老的问题.下面以python3.7为例,演示如何在hadoop上使用自定义的python版本以及第三方库.1.在https://www.python.org下载Python3.7.2.gz包2.在linux环境下:tarxvfPthon3.7.2解压文件
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
2年前
OpenJDK11与Spring Cloud Finchley的不兼容问题与解决
本文的环境:OpenJDK11.0.4,SpringCloudfinchleySR4,SpringBoot2.0.3最近遇到了一个问题,在feign调用的时候,时常会出现这样一个奇怪的错误:2019100708:00:00.620ERRORxxx,e1ba4c7540954aa3,871b99c4576d42e3
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
JOptionPane修改图标
1.在Linux平台下.JOptionPane会显示Java默认的图标,在window平台不显示图标,如何替换这个图标了?2JOptionPane.setIcon(Icon)修改的是内容区域的icon,而不是左上角的Icon.所以需要通过修改Jdialog/Frame的图标来达到修改默认图标的问题.3.代码:if(JOptio
Wesley13 Wesley13
2年前
NEO从源码分析看网络通信
_0x00前言_NEO被称为中国版的Ethereum,支持C和java开发,并且在社区的努力下已经把SDK拓展到了js,python等编程环境,所以进行NEO开发的话是没有太大语言障碍的。比特币在解决拜占庭错误这个问题时除了引入了区块链这个重要的概念之外,还引入了工作量证明(PoW)这个机智的解决方案,通过数学意义上的难题来保证每个
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这