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

Python打包成可执行文件的方式

领导让做一个考勤反馈的小工具,我需要把写好的pandas代码打包成exe。特别提示:若希望程序在不同系统上运行,需要在不同的系统上要分别打包可执行文件,如pyinstaller的版本和操作系统、架构有关。

  • pandas在读写文件时在linux上不会报错,到windows上就会报错缺少模块。因此,在读写文件时需要指定引擎,此处读文件用xlrd,写文件用openpyxl。另外表格的文件类型(xls\xlsx\csv)也会决定读写用的库和版本。
rest1 = pd.read_excel('请假.xls',header=2,engine='xlrd',dtype={"人员编码":str}) new2.to_excel('部门考勤异常情况表.xlsx',index=False,engine='openpyxl')
  • 希望导出的表格有下拉框,还使用openpyxl为原代码增加了下拉框。因此
from openpyxl import load_workbook from openpyxl.worksheet.datavalidation import DataValidation
  • 依赖之间的版本匹配是个大问题,所以。在选择pyinstaller的版本时,我们需考虑python版本与操作系统类型。Python版本也决定了pandas版本,pandas版本决定了xlrd、openpyxl的版本。
  • 目录切换问题:

  • 分系统架构or操作系统构建不同的可执行文件:

Linux:

uname -a(可查看系统相关信息)

指令集架构:aarch64即arm64,x86_64即amd64。

关于操作系统和指令集架构的区分:

架构是硬件的基础设计,决定了CPU能理解和执行什么指令;操作系统是管理硬件资源的软件,必须在特定架构的CPU上运行。简单来说,一个是硬件的“身体”,一个是软件的“管家”。

  • 将python转为exe最方便的是Pyinstaller。
  • 虚拟环境:

Pyinstaller对为了适配不同系统要求,我们最好在各个系统上分别构建可执行文件,最好建立虚拟环境,这样和主机上的依赖不会冲突,在打包时也更轻便。

建立虚拟环境:

管理员CMD切换到虚拟环境路径:

cd /d "你的虚拟环境路径\Scripts" activate

python -m venv venv #创建虚拟环境 venv\Scripts\activate.bat #激活虚拟环境(CMD) source venv/bin/activate#激活虚拟环境(Linux) deactivate #退出虚拟环境
  • Pyinstaller打包命令:
# 清理之前的构建缓存 pyinstaller --clean your_script.py # 然后再进行完整打包 pyinstaller --onefile your_script.py #打包成一个文件 pyinstaller -F --add-data "你的数据文件;." your_script.py #排除某些不必要依赖 pyinstaller --exclude-module PyQt5 --exclude-module numpy your_script.py

pyinstaller运行依赖:pyinstaller-hooks和altgraph

Python相关:

确认某库的安装信息:

pip list | findstr pandas pip show pandas
  • 内网本不能联网安装库怎么办?手动安装!

1、去官网下载.whl文件放入依赖库文件夹(如usr/bin/python3.8/dist-packages):

pip install xxx.whl

2、下载.tar.gz文件,解压后:

python setup.py install

  • 压缩打包文件体积

1、利用压缩工具如upx,但是压缩效果不好,和原文件差不多大小。

  • upx压缩命令:
# 最佳压缩比(速度慢) upx --best your_executable # 快速压缩(压缩率较低) upx --fast your_executable # 压缩并备份原文件 upx -k your_executable

2、换成编译性语言(C、Go)而不是解释性语言(Python)

Nuitka可以将脚本语言转换为C语言再打包

现象:生成的可执行文件体积过大。
解决方案

  1. 使用--nofollow-import-to排除不必要的模块
  2. 安装zstandard库后再次打包,可以减小文件体积
  3. 考虑使用--onefile选项将所有内容打包为单个文件
python3.8 -m nuitka --standalone --static-libpython=yes --enable-plugin=numpy your_script.py #static-libpython:静态链接,不依赖于环境,体积大;动态链接编译出的文件依赖pythonxx.dll,体积小。 #enable-plugin:需要引入的模块 #standalone以文件夹形式存在,包含可执行文件与所有的依赖库;onefile为一个单独可压缩的可执行文件。
  • Nuitka依赖zstandard进行压缩,但是执行压缩时会报错:“Automatic detection og static libPython failed.”原因是系统的静态库文件路径与Python的静态库文件路径不一致。

解决方法:在python识别的静态库文件目录与系统的静态库文件目录间建立软链接:

# 1. 把库链接到 Python 期望的 /usr/lib/ 目录 # 这解决了 Nuitka "static libpython not found" 的问题 sudo ln -s /usr/lib/aarch64-linux-gnu/libpython3.8.a /usr/lib/libpython3.8.a # 2. (可选) 确保系统编译器也能找到 # 如果 /usr/lib/aarch64-linux-gnu/libpython3.8.a 已存在,这步可以跳过 # 但如果之前被删了,建议补上: sudo ln -s /usr/lib/python3.8/config-3.8-aarch64-linux-gnu/libpython3.8.a /usr/lib/aarch64-linux-gnu/libpython3.8.a
  • UBUNTU系统包管理:

http://www.jsqmd.com/news/457727/

相关文章:

  • XGP存档提取器:跨平台游戏进度迁移解决方案
  • 2026冲刺用!实力封神的AI论文工具 —— 千笔·专业学术智能体
  • 0575-步进电机控制(通电+步数+方向)-系统设计(51+数码管+ULN2003)
  • MySQL学习日记——DAY08(流程控制、游标、窗口函数)
  • 别再让一个Agent干所有活!Multi-Agent系统才是企业级应用的未来
  • 广佛莞深RPA定制,数谷智能科技让软件操控自动化?
  • ComfyUI-WanVideoWrapper:AI视频生成工具全攻略
  • 高职计算机专业不再吃香?2026年真实就业岗位全景与逆袭攻略
  • 如何永久保存社交媒体内容?专业级备份工具全解析
  • 改进深度可分离卷积的YOLOv5:面向农业害虫识别的轻量化设计与实现
  • 【脉宽调制DCDC功率变换001】PWM DCDC变换器的特性和问题
  • vgmstream全解析:游戏音频处理从入门到精通
  • 虚拟机安装redia
  • 代码随想录 Day3
  • 3个维度解析微信聊天记录数据管理:从备份到深度分析的完整方案
  • Flutter 组件 mek_data_class_generator 的鸿蒙化适配实战 - 驾驭核心数据防腐大厂,实现 OpenHarmony 业务模型的不可变性与零污染自动化生成
  • 实测对比后AI论文平台,千笔AI VS 万方智搜AI,本科生写作首选!
  • 突破系统权限限制:NSudo权限管理工具全方位应用指南
  • 2026年铝棒品牌新势力:这些铝圆棒品牌正引领市场潮流,包装铝板/平铝板/T3紫铜棒/花纹铝管,铝棒产品排行榜 - 品牌推荐师
  • 华为OD机考双机位C卷 - 挑选宝石 (Java Python JS GO C++ C)
  • Flutter 三方库 server_native 的适配鸿蒙实战 - 驾驭极致底层核心扩展,实现 OpenHarmony 端服务端进程的深绑动态二进制计算底座
  • 第一次程序开发设计作业
  • 开源工具IronyModManager:Stellaris模组问题诊断与解决方案
  • 华为OD机考双机位C卷 - 执行任务赚积分 (Java Python JS GO C++ C)
  • 2026年好用的进口床垫推荐,独立弹簧进口床垫实力厂商揭秘 - mypinpai
  • RDP Wrapper:突破Windows远程桌面限制的技术实践指南
  • 微信小程序的工厂生产流程与库存管理一体化系统
  • 华为OD机考双机位C卷 - 挑选字符串 (Java Python JS GO C++ C)
  • Linux 环境配置
  • 什么是“数据清洗” 和 “特征工程”?