現在嘗試一下打包多個有互相調用的 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