linux环境下安装多个任意版本的python环境

linux环境下安装多个任意版本的python环境

安装方法可以归结为 [下载 + 编译 + 配置环境变量]


下载Python

参考链接:
  • .任意python版本下载,所有python版本下载的FTP路径

Windows下载发送到linux上

step1. 下载linux版本的python
从Python官网进入
选择Downloads - Allreleases

step2. 选择版本下载
进入到下载页面
注意点击的是Release version那一列,我们需要下载源码的package包
在fig1
step3. 选择xz的压缩包下载
在Release version链接下的Files中
选择gzipped 和 xz都可以,一个是tgz压缩包一个是tar.xz压缩包。
后续都可以用tar -vxf packageName命令解压。
fig2
step4. 用mobaxterm或者其他手段将文件发送到linux服务器上

在这里插入图片描述

Linux上下载

step1. 根据上文的step3中
右键点击下载链接,选择选择复制链接地址
在这里插入图片描述
step2. 记住这个链接地址,转到终端执行如下命令
考虑到没有UI界面的情况直接给出命令
wget 下载
基本用法wget 下载链接

wget https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tgz

编译安装

step 0. 安装编译依赖
这一步为可选选项,除非编译不通过才需要安装这些内容。

  • centos下安装方式
yum install -y gcc patch libffi-devel python-devel \zlib-devel bzip2-devel openssl-devel ncurses-devel \sqlite-devel readline-devel tk-devel gdbm-devel \db4-devel libpcap-devel xz-devel

step1. 解压压缩包

tar -xvf Python-3.10.4.tgz

step2. 编译安装

  • 进入解压目录,需要使用root权限进行安装。
  • 指定安装目录,生成makefile
    • 命令./configure something
  • 编译
    • 命令make
    • 如果要加速编译可以试试,需要硬件支持加速make -j8
  • 安装
    • 命令make install

一次性执行脚本如下

>>> su
>>> cd Python-3.10.4
>>> ./configure --prefix=/opt/python3104 && make && make install

安装完成之后会有如下提示

  WARNING: The scripts pip3 and pip3.10 are installed in '/opt/python3104/bin' which is not on PATH.  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.  

这是说明我们还没有将python3添加到环境变量中。

step3. 添加python3至环境变量
终端输入whereis python,可以看到有个路径是usr/bin/python2.7,这是默认安装python的目录,因此我们也将我们的python添加到这个路径下。

>>> whereis pythonpython: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 
/etc/python /usr/include/python2.7 /opt/python374/bin/python3.7 
/opt/python374/bin/python3.7-config /opt/python374/bin/python3.7m-config 
/opt/python374/bin/python3.7m /opt/python3104/bin/python3.10 
/opt/python3104/bin/python3.10-config /usr/share/man/man1/python.1.gz

在系统Path目录中添加python控制命令

>>> cd /usr/bin/
>>> ln -s /opt/python3104/bin/python3.10 python310
>>> ls -la | grep python # 查看一下是否已经有python310
>>> python310 # 执行这个命令,出现下文对话框,说明已经安装完成。Python 3.10.4 (main, Mar 28 2022, 15:18:11) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

同样的添加pip的控制命令

>>> cd /usr/bin/
>>> ln -s /opt/python3104/bin/pip3.10 pip310
>>> ls -la | grep pip # 查看一下是否已经有pip310>>> pip310 --versionpip 22.0.4 from /opt/python3104/lib/python3.10/site-packages/pip (python 3.10)>>> pip310 show pip
# 关注其中location那一行,就是当前python环境安装包所处的位置。
Location: /opt/python3104/lib/python3.10/site-packages>>> pip310 listPackage    Version
---------- -------
pip        22.0.4
setuptools 58.1.0

问题解决

问题1:SSL问题

现象:
如下报错,且pip无法安装库

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

原因:没有安装底层SSL依赖
解决方案:

执行编译安装step0步骤后,再重新编译安装python环境
参考链接:
https://blog.csdn.net/weixin_43781229/article/details/111827939

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux云服务器状态上报解决方案:外发个人邮箱

linux云服务器状态上报解决方案:外发个人邮箱 需求如下: #### 将一些服务器的关键日志实时发送到手机上一些案例: CPU状态检测 解决方案: #### 利用mailx命令外发邮件方法如下: 1. 用管理员打开mail配置文件 >…

Matplotlib画图教程:在QT界面中嵌入三维图片

Matplotlib画图教程:在QT界面中嵌入三维图片 需求: 做项目报告的时候,有这么一个想法,就是能通过UI随时调用matplotlib进行二维图和三维图的绘制。因此就诞生了做这么一个小模块的想法。 这里先上一下最终结果: 思…

Python工程笔记(1):轨迹与日志

轨迹记录模块(Recorder) 轨迹和日志是定位工程问题的备忘录和总结代码开发项目管理经验的基本素材,是工程交验收资料的重要组成部分 1.1 依赖表 包名含义安装方式系统包ostime 1.2 全局变量表 变量名含义初值log_file日志保存路径./recor…

Python代码优化(1):天气预报获取

天气预报获取模块 基于http://www.weather.com.cn/做了代码优化,每个函数功能更加明确,更加适合单独集成。接口也进行了优化,比网络上博主抄来抄去的源码要好一些。 改进点:获取天气拆成了多个函数,多次保存csv文件不…

proxy_pool开源项目攻克学习

开源项目攻克学习之proxy_pool 1. 学习背景 爬虫线程池,但是网络上付费的又很麻烦,于是在开源网站上找到一个版本进行学习。 https://github.com/jhao104/proxy_pool 本人操作系统deepin,有遇到一些问题,希望可以跟大家分享一…

pip 指定镜像源 指定版本 批量安装

要用 pip 安装指定版本的 Python 包,只需通过 操作符 指定 例如:pip install pycrypto2.6.1 将安装pycrypto2.6.1 版本。 要使用pip 批量安装,需要写requirements.txt文件,一行一个包 numpy matplotlib wxpypip install -r r…

Linux命令行下统计当前文件夹下的文件个数

统计某文件夹下文件的个数 ls -l |grep “^-”|wc -l 统计某文件夹下目录的个数 ls -l |grep “^d”|wc -l 统计文件夹下文件的个数,包括子文件夹里的。 ls -lR|grep “^-”|wc -l 统计文件夹下目录的个数,包括子文件夹里的。 ls -lR|…

proxy_pool开源项目攻克学习2:服务器架设

proxy_pool开源项目攻克学习2:服务器架设 在这个文章proxy_pool开源项目攻克学习中,我们完成了本地的proxy_pool架设。现在我们将他转移到服务器上。 硬件环境准备 腾讯centos服务器。 软件环境准备 redispython3.7proxy_pool开源项目 安装过程 总…

python opencv安装

opencv安装 pip install opencv-python依赖安装 # libglvnd-1:1.3.2-1.tl3.x86_64 # libglvnd-glx-1:1.3.2-1.tl3.x86_64 # libxshmfence-1.3-2.tl3.x86_64 # mesa-libGL-20.3.3-2.tl3.x86_64 # mesa-libglapi-20.3.3-2.tl3.x86_64yum install libGL

nodejs轻量服务器后端

nodejs轻量服务器后端 搭建思路 server.js主函数 mine.js配置文件 index.html 测试网页 目录结构 __./|__ test1|__ index.html|__ mine.js|__ server.jsserver.js文件 var PORT 8080; //端口 var DIR test1; //用于存放html的目录var http require(http);…

[Leetcode713]乘积小于 K 的子数组

公司里偷偷刷题记录 做一下笔记 求解子数组方式: 两种方案: 通用方案就是前缀和查找 另一种是递增序列可用的滑动窗口 有些题目如果给出来的数字有正,负。那么一定就要转化成前缀和。 如果是全正数组,可以采用前缀和二分查找的…

[Leetcode15]三数之和

重刷一遍相向双指针 题目 leetcode15 https://leetcode.cn/problems/3sum/ 类似的题目还有leetcode16 leetcode16 解答思路 关键点 快排 双指针 1: 快速排序,之后使用双指针遍历对应的位置,求解 2: 主要是在确定了第一个值…

光学元件生产工艺流程

光学元件生产工艺流程 选胚料 – 开料(初步切割)- 清洗 - 上盘(批处理) – 切割 – 粗磨整平 – 粗检 – 细磨上盘 – 细磨 – 高速抛光 – 低速抛光 – 光胶 – 成片 – 上盘 – 成品切割 – 清洗 – 包装 粗磨阶段 选胚料: 选择光学元件的原材料,如K9,BK7玻璃等 开…

[leetcode933]最近的请求次数

每日偷偷刷题933和队列有关 思路 每来一次ping就记录时间,并返回3000s内ping的次数,本题数据量很大,正向暴力肯定是不行的。 初步思路:反向暴力,不删列表数据。从ping的下标往前推,并统计3000s的数据。 …

[leetcode]5. 最长回文子串 647. 回文子串

昨日刷题,今日补发 解题思路 中间扩展,遍历数组,以每一项为中心,或以每两项为中心,向外拓展。 学习一下pair概念,还有string的substr的用法 以下是leetcode第五题 C做法 class Solution { public:pair…

牛客网选择题刷题记录之C++

数据结构 顺序表 在一个长度为n的顺序表的任意位置插入一个新元素的渐进时间复杂度为() A. O(n) B. O(n/2) C. O(1) D. O(n的平方) 答案: A 解析…

[剑指offer 24] 反转链表

题目复习反转链表 字节面试的一道面试考题。属于简单题,毕竟复杂的面试也不好判题对吧(狗头) 思路 思路不难,首先我们观察链表,一般链表指的都是单向链表 struct ListNode {int val;struct ListNode *next; };那么…

[剑指offer 27][LeetCode234] 回文链表

偷偷刷题记录 回文链表 思路 思路1. 处理链表最粗暴的方式就是拷贝到数组中。考试时候也是,只要不会超内存,完全这么办 思路2. 快慢指针。因为我们判断是不是回文链表,回文的特性就是以中为界,两头对称。由于我们不能像使用数组…

牛客网选择题刷题记录之Linux系统

linux运维 linux指令 下面有关linux查看系统负载的命令,说法错误的是? A. uptime命令主要用于获取主机运行时间和查询linux系统负载等信息 B. vmstat命令可以查看查看cpu负载 C. sar -n命令可以查看网络接口信息 D. free命令可以查看磁盘负载情况 答案&…

Keil_uvision_4基本使用教程

前言: keil uvision 5 和 4 使用方式差不多 Keil_uvision_4基本使用教程 Keil C51 V9.00 即09年发布的最新版本uVision 4,版本外观改变比较大 可以使用以前的注册文件如果全新安装,在VISTA或者WIN 7系统下…