You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Python pip3模块集成至OpenWRT初始固件镜像中

把Python3与pip3模块集成到OpenWRT固件的实现方法

嘿,我之前刚好研究过怎么把Python包直接集成到OpenWRT固件里,这样刷完机不用再手动折腾依赖,太省心了!下面给你详细说下具体步骤,以你提到的Python3和argparse模块为例:

1. 先搭好OpenWRT编译环境

首先得在本地电脑(推荐用Ubuntu/Debian类系统)搭建OpenWRT的编译环境:

  • 克隆官方OpenWRT源码到本地目录
  • 进入源码目录后,更新并安装feeds:
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    

2. 配置编译选项,加入Python3基础组件

运行make menuconfig进入图形配置界面,找到以下选项并勾选:

  • Languages -> Python:勾选python3python3-pip(要装pip模块必须选这个),如果需要其他基础组件也可以一起选上
  • Save保存配置,退出界面

3. 集成argparse模块两种方法

方法一:把pip包转成OpenWRT专属ipk包(推荐)

这种方法最规范,模块会像官方软件包一样被管理:

  • 在编译环境的系统里先安装依赖:apt install python3-pip python3-setuptools
  • 安装pip2ipk工具:pip3 install pip2ipk
  • 生成argparse的ipk包:pip2ipk argparse
  • 把生成的ipk包放到OpenWRT源码的packages目录下
  • 再次运行make menuconfig,在Local Packages里找到这个argparse的ipk包并勾选
  • 这样编译时就会自动把它集成到固件里

方法二:首次启动自动离线安装(快速测试用)

如果只是快速验证,可以用这种方式,不用打包ipk:

  • 先在本地下载argparse的离线wheel包:pip3 download argparse -d ./wheels
  • 把整个wheels目录复制到OpenWRT源码的package/base-files/files/root/路径下
  • package/base-files/files/etc/uci-defaults/目录下新建一个脚本99-install-python-packages,内容如下:
    #!/bin/sh
    # 离线安装argparse模块
    pip3 install --no-index --find-links=/root/wheels argparse
    # 安装完成后清理安装包
    rm -rf /root/wheels
    exit 0
    
  • 给脚本加执行权限:chmod +x package/base-files/files/etc/uci-defaults/99-install-python-packages

4. 编译固件

完成所有配置后,运行以下命令开始编译:

make -j$(nproc)

编译完成后,在bin/targets/对应的设备目录下就能找到生成的固件,刷入设备后,开机就已经自带Python3和argparse模块了!

小提醒

  • 注意:argparse其实是Python3的标准库,如果你在make menuconfig里选的是完整的python3包,可能已经自带了这个模块,不用额外安装,可以先确认下避免做无用功
  • 对于一些带编译依赖的Python模块(比如numpy),需要提前在OpenWRT编译配置里勾选对应的系统库,否则离线安装会失败

内容的提问来源于stack exchange,提问作者cdevman

火山引擎 最新活动