qadan 发表于 2024-11-11 16:37

python项目跨平台编译打包问题请教

我的需求
[*]在Windows 10平台进行代码开发,不更换到linux
[*]开发完后,在Windows上进行编译,编译到Linux 二进制文件包,包括 linux-amd64和linux-arm64等
[*]我的python项目使用了python fastapi框架



研究了两天,问了鸡屁屁踢各种回复都没搞定,目前使用了docker在本地引用linux-arm64基础镜像,但是编译镜像各种报错。


Github哪些项目release下都有各种二进制的文件,我需要就是这样效果,总不能一个系统开一个虚拟机,代码传上去编译把,所以问下大佬们的经验!

YUYELOVE 发表于 2024-11-12 09:09

纯python项目需要编译么,难道不是直接上传源代码,安装依赖(pip install),python xxx.py (或者gunicorn --workers--bind )直接运行程序么。

github上的二进制是别人开发好的三方库,通过pip install 引入使用。

TheTree 发表于 2024-11-12 10:05

,可以采用 Docker 容器来完成跨平台编译
步骤概述
准备 Dockerfile:定义用于编译的 Docker 镜像。
编写多阶段构建 Dockerfile:确保生成的二进制文件可以在目标平台上运行。
使用 Docker 命令进行编译:在 Docker 中编译 Python 项目,并生成二进制文件。
自动化脚本:简化多平台编译的过程。

qadan 发表于 2024-11-12 10:14

TheTree 发表于 2024-11-12 10:05
,可以采用 Docker 容器来完成跨平台编译
步骤概述
准备 Dockerfile:定义用于编译的 Docker 镜像。


这个有详细教程吗,我用docker一推报错

qadan 发表于 2024-11-12 10:15

YUYELOVE 发表于 2024-11-12 09:09
纯python项目需要编译么,难道不是直接上传源代码,安装依赖(pip install),python xxx.py (或者gunicor ...

我需要生产环境的包,别人拿过来直接运行的,不需要安排一大堆库

antk 发表于 2024-11-12 10:37

不知道你搜没搜过 “python交叉编译”,我以前搞过GO的交叉编译,GO相对简单点,python好像比较复杂,你搜一下看看吧。但是说实话交叉编译坑很多,最实用的说实话还是docker。

neotheone233 发表于 2024-11-12 13:38

这个问题我们碰到过,场景是生产机器不允许联网,环境只提供基础python+centos

分享一下我们的解决方案:
1. 裸机部署。用pip wheel把依赖全部下载编译(在docker镜像里处理)出来,最后将源码和依赖文件夹一起提供。这里有一点坑:有些依赖的编译需要条件(如:TA-lib),这个部分需要单独处理
下载:pip wheel . -w ./dependencies
安装:pip install --upgrade --no-index --find-links=./dependencies -r requirements.txt

2. 自带docker的rpm安装包,直接使用docker分发,分stage构建,属于比较常见的做法
docker build --platform linux/amd64 -t xxx/xxx:latest -f Dockerfile .

至于问题里面的打包,可能考虑在docker里面做pyinstaller这个方向了,注意指定一下--platform就好。不过这种分发方式很少见,现在开源项目基本都提供docker compose的部署方式
页: [1]
查看完整版本: python项目跨平台编译打包问题请教