香橙派3B学习笔记8:snap安装管理软件包_打包俩个有调用的python文件
现在尝试一下打包多个有互相调用的 py程序:
ssh : orangepi@本地ip
密码 : orangepi操作系统发行版: 基于 Ubuntu 20.04.6 LTS(Focal Fossa)的定制版本,专门为 Orange Pi 设备优化。PRETTY_NAME="Orange Pi 1.0.6 Focal"
目录
程序准备:
复制与修改文件读写权限:
创建snap调用目录:
创建 Snapcraft 定义文件:
构建snap包:
测试安装:
问题指示:
程序准备:
在上文的基础上,打包俩个python程序 :
现在我有俩个py程序,一个是Main.py,一个是App.py
Main.py
#!/usr/bin/env python3 # main.py # 导入 module_program 中的函数 from App import greet, add, multiplydef main():# 调用greetgreet("David")# 调用 addsum_result = add(5, 3)print(f"5 + 3 = {sum_result}")# 调用 multiplyproduct_result = multiply(5, 3)print(f"5 * 3 = {product_result}")if __name__ == "__main__":main()
App.py
#!/usr/bin/env python3 # App.pydef greet(name):print(f"Hello, {name}!")def add(a, b):return a + bdef multiply(a, b):return a * b
执行Main.py会有这个输出:
复制与修改文件读写权限:
现在我将俩个文件复制到/home/orangepi/snap_packet_test/pack_test_2/
然后修改它们的权限与格式:
先进入它们的目录:
cd /home/orangepi/snap_packet_test/pack_test_2/
如果需要utf-8格式转换:
dos2unix App.py dos2unix Main.py
修改读写权限:
chmod +rwx App.py chmod +rwx Main.py
1
创建snap调用目录:
创建meta文件夹
mkdir -p meta
创建 Snapcraft 定义文件:
Snapcraft.yaml
name: test2-app version: '0.5' summary: Test app description: A simple test application. base: core22 grade: stable confinement: strictparts:test-app:plugin: pythonsource: .python-packages:apps:test2-app:command: Main.pyplugs:- network
完后将
snapcraft.yaml复制进
snap调用目录meta里面:cp snapcraft.yaml meta/snap.yaml
构建snap包:
snapcraft pack .
测试安装:
然后复制生成的snap文件
到别的目录/home/orangepi/snap_packet_test/test_1/
去运行测试:
cp test2-app_0.5_all.snap /home/orangepi/snap_packet_test/test_1/
进入目录 cd /home/orangepi/snap_packet_test/test_1/
解包:
sudo snap install --dangerous test2-app_0.5_all.snap
运行测试:
test2-app
问题指示:
本次操作遇到过一个问题:
原因是我的py文件没有明确指定解释器,填上这句就行了:
#!/usr/bin/env python3