当前位置: 首页 > article >正文

Linux 多Python版本统一和 PySpark 依赖 python 包方案

背景

Linux 服务器经常有多个Python版本,比如 Python2 有两个版本,Python3 有两个版本。在使用上容易混淆,而且有些需要新增一些 module 更容易,安装如果路径不统一,导致日常使用时,会出现找不到新安装module的问题。

所以目前简单的方案,统一Linux上使用的Python版本。

解决方案

Python 路径

Linux服务器一般可能存在多版本(这里以 Python3 为例,Python2 不建议业务继续使用),一个在 /usr/local/python3 目录下,版本是 3.6.15;  另一个在 /usr/bin/python3 目录下,版本是 3.6.8。

多版本Python容易混淆,而且安装依赖不太方便,后续统一Python使用 系统环境 /usr/bin/python3 ,版本是 3.6.8。

同时 /usr/local/python3/bin/python3 不在使用,先备份这个路径下 /usr/local/python3/bin/python3 版本,然后做一个新的软连接,统一使用系统环境中 python3 版,如下图所示:

mv /usr/local/python3/bin/python3 /usr/local/python3/bin/python3_bakln -s /bin/python3   /usr/local/python3/bin/python3
[root@centos ~]# which python3
/usr/bin/python3
[root@centos ~]# cd /usr/local/python3/bin/
[root@centos bin]# ll
total 37312
-rwxr-xr-x 1 root root      111 Jan  1  2022 2to3
-rwxr-xr-x 1 root root      111 Jan  1  2022 2to3-3.6
-rwxr-xr-x 1 root root      252 Jan  1  2022 easy_install-3.6
-rwxr-xr-x 1 root root      109 Jan  1  2022 idle3
-rwxr-xr-x 1 root root      109 Jan  1  2022 idle3.6
-rwxr-xr-x 1 root root      262 Apr 27  2023 normalizer
-rwxr-xr-x 1 root root      243 Mar 30  2023 pip
-rwxr-xr-x 1 root root      243 Mar 30  2023 pip3
-rwxr-xr-x 1 root root      243 Mar 30  2023 pip3.6
-rwxr-xr-x 1 root root       94 Jan  1  2022 pydoc3
-rwxr-xr-x 1 root root       94 Jan  1  2022 pydoc3.6
lrwxrwxrwx 1 root root       12 Mar 30  2023 python3 -> /bin/python3
-rwxr-xr-x 1 root root 12710424 Jan  1  2022 python3.6
-rwxr-xr-x 1 root root     3107 Jan  1  2022 python3.6-config
-rwxr-xr-x 1 root root 12710424 Jan  1  2022 python3.6m
-rwxr-xr-x 1 root root     3107 Jan  1  2022 python3.6m-config
-rwxr-xr-x 1 root root 12710424 Jan  1  2022 python3_bak
-rwxr-xr-x 1 root root     3107 Jan  1  2022 python3-config
-rwxr-xr-x 1 root root      451 Jan  1  2022 pyvenv
-rwxr-xr-x 1 root root      451 Jan  1  2022 pyvenv-3.6
[root@centos bin]# ./python3.6 -V
Python 3.6.15
[root@centos bin]#
[root@centos bin]# python3 -V
Python 3.6.8

Python Module 

业务在使用上,可以需要安装一下Python依赖的module,经过上面的版本统一,所以这样就可以直接使用 pip3 install xxx 即可。

对于 Python Spark 类型的任务,在执行的时候,尽量选择 deploy-mode client 模式。这样会任务会依赖本地的 python3 包。

对于使用 deploy-mode cluster,会依赖 /usr/local/python3/python3.zip 这个包,如果业务任务需要依赖新安装的 module ,此时需要重新打包 python3.zip 包。

[root@centos python3]# pwd
/usr/local/python3
[root@centos python3]# ll
total 2032912
drwxr-xr-x 2 root root      4096 Apr 27  2023 bin
drwxr-xr-x 3 root root      4096 Jan  1  2022 include
drwxr-xr-x 4 root root      4096 Jan  1  2022 lib
-rwxrwxrwx 1 root root 687685756 Jan 15 10:29 python3.zip
drwxr-xr-x 3 root root      4096 Jan  1  2022 share
drwxr-xr-x 6 root root      4096 Apr 27  2023 test

按照上述的使用系统环境变量中版本,这个python包很难去获得。目前只能通过按照到 /usr/local/python3/bin/pip3 install xxx 模式,安装在指定路径下,然后执行  cd /usr/local/python3/ && zip -r python3.zip *   包。

Python Module 虚拟环境打包

PySpark类型的任务默认使用 yarn cluster 模式提交的,所以需要将提交机器上 python3.zip 包上传到 远程的 driver和 executor 上,针对一些新安装的python3模块,需要将安装的模块重新打包到 python3.zip 中。

否则,任务执行会出现找不到 python3 中某个模块。

在Linux Centos上创建一个python3虚拟环境 venv,启动python3虚拟环境,在虚拟环境中安装需要的module即可,具体的详细命令如下,后续会整理成一个自动化脚本:

PS:1.如果有自定义开发的module,需要手动安装一下 ;

        2.下面的Python3的虚拟环境可以复用,不用重复创建。

###注意:下面的Python3的虚拟环境可以复用,不用重复创建#创建python3虚拟环境路径,使用系统环境变量中python3版本
python3 -m venv  /home/root/python3-venv/#进入python3虚拟环境目录
cd   /home/root/python3-venv/ #获取当前系统环境下python3安装的module
pip3 freeze > requirements.txt#启动虚拟python3环境
source /home/root/python3-venv/bin/activate#将系统环境中安装的python3模块安装到虚拟python3环境
pip3 install -r requirements.txt#退出python3虚拟环境
deactivate#python3打包
zip -r python3.zip *mv /usr/local/python3/python3.zip /usr/local/python3/python3.zip.bak.$(date +%Y-%m-%d)cp /home/root/python3-venv/python3.zip /usr/local/python3/chmod 777 /usr/local/python3/python3.zip

问题总结

#如果报错:[rootaV-centos]# python3 -m veny/home/root/python3-venv  /home/root/python3-venv/bin/python3'ensurepip','--upgrade" rror: Command'--default-pip']' returned non-zero exit status 1 
#如果上面创建python3虚拟环境命令有问题,可以试试下面这个命令,不复制 pip3,后续通过手动方式安装pip3
python3 -m venv --without-pip /home/root/python3-venv/cd /home/root/python3-venv/#启动虚拟python3环境
source /home/root/python3-venv/bin/activate#下载 3.6 pip3 安装文件
wget  https://bootstrap.pypa.io/pip/3.6/get-pip.py#安装pip3
sudo python3 get-pip.py#查看pip3使用的路径
which pip3 #退出python3虚拟环境
deactivate

SO文件问题

调度机上面对应的需要的SO文件,放到 Python3  site-packages 路径下,再打包就好了。

有些so文件,可以放的位置不太一样。比如 librocketmq.so 文件,存放的位置是 /usr/lib/python3.6/site-packages/rocketmq 路径下。

cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so  /usr/lib/python3.6/site-packages

MQ 安装和参考

报错:ImportError: rocketmq dynamic library not found解决方法-CSDN博客

相关文章:

Linux 多Python版本统一和 PySpark 依赖 python 包方案

背景 Linux 服务器经常有多个Python版本,比如 Python2 有两个版本,Python3 有两个版本。在使用上容易混淆,而且有些需要新增一些 module 更容易,安装如果路径不统一,导致日常使用时,会出现找不到新安装mod…...

PostgreSQL的学习心得和知识总结(一百六十九)|深入理解PostgreSQL数据库之 Group By 键值消除 的使用和实现

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…...

DeepSeek是什么?两种模型的对比?

最近DeepSeek的风也是很大,它也是很火,那么DeepSeek是什么呢? 什么是DeepSeek? DeepSeek是一家专注通用人工智能(AGI)的中国科技公司,主攻大模型研发与应用。DeepSeek-R1是其开源的推理模型&a…...

跟着 Lua 5.1 官方参考文档学习 Lua (2)

文章目录 2.3 – Variables2.4 – Statements2.4.1 – Chunks2.4.2 – Blocks2.4.3 – Assignment2.4.4 – Control Structures2.4.5 – For Statement2.4.6 – Function Calls as Statements2.4.7 – Local Declarations 2.3 – Variables Variables are places that store v…...

Python基于循环神经网络的情感分类系统(附源码,文档说明)

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…...

Zookeeper应用案例-分布式锁-实现思路

以下是具体实现代码 第一步:注册锁节点 第二步:获取锁节点,如果自己是最小的节点,就获取权限 第三步:拿到锁就开始自己的业务逻辑 第四步:业务逻辑好了就要释放这把锁 第五步:重新注册监听&…...

java练习(32)

ps:题目来自力扣 环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表…...

伯克利 CS61A 课堂笔记 10 —— Trees

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。 目录 01 Trees 树 Ⅰ Tree Abstraction Ⅱ Implementing the Tree Abstraction 02 Tree Processing 建树过程 Ⅰ Fibonacci tree Ⅱ Tree Process…...

让编程变成一种享受-明基RD320U显示器

引言 作为一名有着多年JAVA开发经验的从业者,在工作过程中,显示器的重要性不言而喻。它不仅是我们与代码交互的窗口,更是影响工作效率和体验的关键因素。在多年的编程生涯中,我遇到过各种各样的问题。比如,在进行代码…...

10分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统

作者:后端小肥肠 目录 1. 前言 为什么选择DeepSeek? 本文技术栈 2. 环境准备 2.1. 后端项目初始化 2.2. 前端项目初始化 3. 后端服务开发 3.1. 配置文件 3.2. 核心服务实现 4. 前端服务开发 4.1. 聊天组件ChatWindow.vue开发 5. 效果展示及源…...

LeetCode 0624.数组列表中的最大距离:只关心最小最大值

【LetMeFly】624.数组列表中的最大距离:只关心最小最大值 力扣题目链接:https://leetcode.cn/problems/maximum-distance-in-arrays/ 给定 m 个数组,每个数组都已经按照升序排好序了。 现在你需要从两个不同的数组中选择两个整数&#xff…...

如何解决服务器端口被攻击:全面防护与快速响应

服务器端口被攻击是网络安全中常见的问题之一,尤其是当服务器暴露在公共网络上时,容易成为黑客的目标。攻击者可能通过扫描开放端口、利用漏洞或发动拒绝服务(DoS/DDoS)攻击来破坏服务器的正常运行。本文将详细介绍如何检测、防御…...

Golang深度学习

前言 在2009年,Google公司发布了一种新的编程语言,名为Go(或称为Golang),旨在提高编程效率、简化并发编程,并提供强大的标准库支持。Go语言的设计者们希望通过Go语言能够解决软件开发中的一些长期存在的问…...

Linux环境开发工具

Linux软件包管理器yum Linux下安装软件方式: 源代码安装rpm安装——Linux安装包yum安装——解决安装源、安装版本、安装依赖的问题 yum对应于Windows系统下的应用商店 使用Linux系统的人:大部分是职业程序员 客户端怎么知道去哪里下载软件&#xff1…...

JupyterNotebook高级使用:常用魔法命令

%%writefile test.py def Test(name):print("Test",name,"success")运行结果:就是在我们的文件目录下面创建了这个test.py文件,主要是认识一下这个里面的%%writefile表示创建新的文件,这个文件里面的内容就是上面我们定义…...

C++ Primer 类的作用域

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

【建设工程经济】2.1-2.2 经济效果评价的相关概念及指标体系

一、学前建议 学习内容主要有: ①财务评价的内容:盈利能力分析、偿债能力分析、财务可持续能力分析(财务生存能力); ②经济效果评价方法分类:确定性和不确定性评价、定量分析和定性分析、静态分析和动态分…...

如何用ollama快速布署deepseek-r1大模型

deepseek在春节期间因为特朗普的一番发言而在中国已几乎人尽皆知,热度到了连90高寿的老父亲都向我推荐这个中国产的AI大模型,而且它是开源的!我试验了下,用ollama也可以快速度安装布署deepseek-r1大模型。本想写篇文章来介绍下dee…...

50页PDF|数字化转型成熟度模型与评估(附下载)

一、前言 这份报告依据GBT 43439-2023标准,详细介绍了数字化转型的成熟度模型和评估方法。报告将成熟度分为五个等级,从一级的基础转型意识,到五级的基于数据的生态价值构建与创新,涵盖了组织、技术、数据、资源、数字化运营等多…...

机器学习实战(8):降维技术——主成分分析(PCA)

第8集:降维技术——主成分分析(PCA) 在机器学习中,降维(Dimensionality Reduction) 是一种重要的数据处理技术,用于减少特征维度、去除噪声并提高模型效率。主成分分析(Principal C…...

面试编程题

1. 请写出string类的定义&#xff0c;要求有构造函数&#xff0c;析构函数&#xff0c;拷贝&#xff0c;赋值函数。 #include <cstring> #include <algorithm>class String { public:explicit String(const char* str nullptr){if(str){str_ new char[strlen(st…...

Transformer多头注意力并行计算原理与工业级实现:从数学推导到PyTorch工程优化

一、核心数学原理剖析 1.1 多头注意力矩阵分解 Q XW^Q ∈ R^{nd_k} K XW^K ∈ R^{nd_k} V XW^V ∈ R^{nd_v} 多头分解公式&#xff1a; head_i Attention(QW_i^Q, KW_i^K, VW_i^V) 其中 W_i^Q ∈ R^{d_kd_k/h}, W_i^K ∈ R^{d_kd_k/h}, W_i^V ∈ R^{d_vd_v/h} (h为头数…...

我的2025年计划

新春佳节已过去了&#xff0c;又是一年伊始&#xff0c;即将步入漫长的工作、生活中了。一年之计在于春&#xff0c;我也不能免俗。 本文从工作生活两方面&#xff0c;列出一些计划。到年底&#xff0c;再回过头来看看&#xff0c;有哪些实现了&#xff0c;有哪些未实现。 工作…...

软件开源与AI开源的区别

一.软件开源 软件开源是指软件的源代码对公众开放&#xff0c;允许用户自由使用、修改和分发的软件。 核心特性&#xff1a;低成本&#xff08;通常免费&#xff09;、高可定制性&#xff08;源代码可用&#xff0c;开发人员可以修改&#xff09;、社区支持&#xff08;庞大的…...

前端插件使用xlsx-populate,花样配置excel内容,根据坐添加标替换excel内容,修改颜色,合并单元格...。

需求要求&#xff1a;业务人员有个非常复杂得excel表格&#xff0c;各种表头等&#xff0c;但是模板是固定得。当然也可以实现在excel上搞出各种表格&#xff0c;但是不如直接用已有模板替换其中要动态得内容方便&#xff0c;这里我们用到CSDN得 xlsx-populate 插件。 实列中我…...

分布式大语言模型服务引擎vLLM论文解读

论文地址&#xff1a;Efficient Memory Management for Large Language Model Serving with PagedAttention 摘要 大语言模型&#xff08;LLMs&#xff09;的高吞吐量服务需要一次对足够多的请求进行批处理。然而&#xff0c;现有系统面临困境&#xff0c;因为每个请求的键值…...

如何开发一个大模型应用?

1. 背景 AIGC技术的突破性进展彻底改变了技术开发的范式&#xff0c;尤其是以GPT为代表的LLM&#xff0c;凭借其强大的自然语言理解与生成能力&#xff0c;迅速成为全球科技领域的焦点。2023年末&#xff0c;随着ChatGPT的爆火&#xff0c;AIGC技术从实验室走向规模化应用&…...

01-零基础入门嵌入式系统

1.什么是嵌入式系统 首先我们要知道计算机系统分为大型机、通用计算机和嵌入式系统三大类。 计算机系统的发展&#xff0c;经历了由1台计算机系统为N个人服务的大型机时代到由1台计算机系统为1个人服务的PC时代&#xff0c;正在步入由N台计算机系统为1个人服务的嵌入式时代。 嵌…...

【机器学习】CNN与Transformer的表面区别与本质区别

仅供参考 表面区别 1. 结构和原理: CNN:主要通过卷积层来提取特征,这些层通过滑动窗口(卷积核)捕捉局部特征,并通过池化层(如最大池化)来降低特征的空间维度。CNN非常适合处理具有网格状拓扑结构的数据,如图像。Transformer:基于自注意力(Self-Attention)机制,能…...

[数据结构]二叉搜索树详解

目录 一、二叉搜索树的概念 二、二叉搜索树的性能分析 三、二叉搜索树的中序遍历用于排序去重 四、二叉搜索树的查找 1、查找的非递归写法 2、查找的递归写法 五、二叉搜索树的插入 1、插入的非递归写法 2、插入的递归写法 六、二叉搜索树的删除 1、删除的非递归写法…...