当前位置:首页>python>从零开始:Linux环境下将Python代码打包成二进制文件的详细指南

从零开始:Linux环境下将Python代码打包成二进制文件的详细指南

  • 2026-10-11 07:47:00
从零开始:Linux环境下将Python代码打包成二进制文件的详细指南

1

准备⼯作
在将Python代码打包为⼆进制⽂件之前,请确保满⾜以下要求:
已安装Python环境。已安装必要的打包⼯具(如PyInstaller)。确保代码已完成并通过测试。

2

安装PyInstaller
PyInstaller是⼀个流⾏的⼯具,⽤于将Python应⽤程序打包为独⽴的⼆进制⽂件。
使⽤pip安装
pip install pyinstaller

3

打包代码
基本打包命令
在代码所在的⽬录下运⾏以下命令:
pyinstaller docker_api_server.py
运⾏上述命令后,PyInstaller会⽣成以下⽂件和⽬录:
  • dist/:⽣成的⼆进制⽂件会存放在此⽬录中。
  • build/:临时⽂件⽬录。
  • docker_api_server.spec:配置⽂件。
⽣成单个⼆进制⽂件
如果需要将所有内容打包为⼀个独⽴的⼆进制⽂件,可以使⽤--onefile选项:
pyinstaller --onefile docker_api_server.py
添加图标
可以为⽣成的⼆进制⽂件指定图标⽂件(需为.ico格式):
pyinstaller --onefile --icon=your_icon.ico docker_api_server.py
设置⽆控制台窗⼝
对于GUI应⽤程序,可以使⽤--noconsole选项以隐藏控制台窗⼝:
pyinstaller --onefile --noconsole docker_api_server.py

4

扩展配置
编辑spec⽂件
如果需要更复杂的配置,可以编辑⽣成的.spec⽂件,然后使⽤以下命令重新打包:
pyinstaller docker_api_server.spec
包含额外⽂件
如果您的程序依赖于额外的⽂件(如配置⽂件、数据⽂件等),可以使⽤--add-data选项:
pyinstaller --onefile --add-data "source_file_path:destination_path" docker_api_server.py
注意:在Linux系统中,源⽂件路径和⽬标路径之间使⽤冒号:作为分隔符。

5

测试⽣成的⼆进制⽂件
⽣成的⼆进制⽂件位于dist/⽬录中。运⾏以下命令测试⼆进制⽂件:
./dist/docker_api_server

6

部署为系统服务
为了实现开机⾃启,可以将⽣成的⼆进制⽂件注册为systemd服务。
创建systemd服务⽂件
  1. 使⽤⽂本编辑器创建服务⽂件,例如:
sudo nano /etc/systemd/system/docker_api_server.service
  1. 在⽂件中添加以下内容:
[Unit]
Description=DockerAPIServerService
After=network.target

[Service]
ExecStart=/path/to/dist/docker_api_server
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
User=your_username
Group=your_groupname

[Install]
WantedBy=multi-user.target
替换/path/to/dist/docker_api_server为实际的⼆进制⽂件路径。替换your_username和your_groupname为运⾏服务的⽤⼾和⽤⼾组。
启⽤并启动服务
  1. 重新加载systemd配置:
sudo systemctl daemon-reload
  1. 启动服务:
sudo systemctl start docker_api_server
  1. 设置开机⾃启:
sudo systemctl enable docker_api_server
  1. 检查服务状态:
sudo systemctl status docker_api_server

7

常⻅问题排查
1. 运⾏时缺少库
确保⽬标系统安装了运⾏时所需的依赖库。如果仍然有问题,可以尝试在打包时加⼊动态库路径:
pyinstaller --onefile --paths=/path/to/library docker_api_server.py
2. ⽂件过⼤
单⽂件打包的⼆进制⽂件可能较⼤。如果对⽂件⼤⼩敏感,可以使⽤--exclude-module选项排除不必要的模块。
3. 兼容性问题
确保在与⽬标系统相同的环境中打包代码,例如使⽤相同的Python版本和依赖项版本。

8

参考
PyInstaller官⽅⽂档:https://pyinstaller.org
systemd官⽅⽂档:https://www.freedesktop.org/wiki/Software/systemd

往期推荐

SpringBoot WebSocket实战:分布式集群消息推送技术详解

达梦数据库开发新篇章!这份独家指南,抢先看!

Java办公自动化:掌握Apache POI和EasyExcel,轻松处理Excel文档

API安全升级:探索API密钥、HTTP BASIC、Token和摘要认证的优劣

硬核实战!手把手带你搭建企业级文档预览服务kkFileView

告别数据“裸奔”时代:6种高招教你如何安全脱敏!

2个月狂揽4.7万Star!AI圈爆火的Hermes Agent,到底是什么?

从零开始部署OnlyOffice:一站式服务交互与代码实现教程

Caffeine缓存库:Java性能最强本地缓存的革命,超越Guava和Ehcache

frp内网穿透全攻略:从安装到配置,实现远程访问的终极指南

Spring Boot 集成 Tess4J 实现图片OCR文字识别

深度解析:EMQX配置SSL监听器,实现MQTT数据安全加密传输

Redis 6.0新特性实战:别再只知道多线程了!

OpenClaw技能大揭秘:如何让AI Agent成为全能型助手?

Nginx性能飙升秘籍:从基础到高级的调优指南

MySQL事务隔离级别:从底层原理到避坑实战

别再说HashMap 很简单,你连它什么时候扩容都说不清

分享

收藏

点赞

在看

最新文章

随机文章