最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

將Python代碼打包成可調(diào)用SDK的四種方法小結(jié)(適用于移動(dòng)端 App)

 更新時(shí)間:2025年04月03日 10:06:36   作者:蕭鼎  
Python是一門功能強(qiáng)大、生態(tài)豐富的語言,廣泛用于數(shù)據(jù)處理、機(jī)器學(xué)習(xí)和后端服務(wù),然而,Python并不是原生的移動(dòng)端開發(fā)語言,如果希望在移動(dòng)端App中調(diào)用Python代碼,最好的方式是將Python代碼打包成SDK,所以本文給大家介紹了幾種Python代碼打包成可調(diào)用SDK的方法

引言

Python 是一門功能強(qiáng)大、生態(tài)豐富的語言,廣泛用于數(shù)據(jù)處理、機(jī)器學(xué)習(xí)和后端服務(wù)。然而,Python 并不是原生的移動(dòng)端開發(fā)語言(Android 主要使用 Java/Kotlin,iOS 主要使用 Swift/Objective-C)。如果希望在移動(dòng)端 App(Android 或 iOS)中調(diào)用 Python 代碼,最好的方式是 將 Python 代碼打包成 SDK,然后通過 FFI(外部函數(shù)接口)或本地服務(wù) 讓 App 訪問它。

本文將介紹幾種 Python 代碼打包成可調(diào)用 SDK 的方法,包括 PyInstaller、Cython、PyOxidizer、Kivy + Buildozer、Chaquopy、BeeWare 等,并提供詳細(xì)的步驟。

1. 選擇打包方式

不同的打包方式適用于不同的應(yīng)用場景:

方法適用場景適用平臺(tái)主要優(yōu)點(diǎn)主要缺點(diǎn)
PyInstaller桌面應(yīng)用Windows, macOS, Linux快速生成可執(zhí)行文件生成的文件較大,不適合移動(dòng)端
Cython計(jì)算密集型模塊Windows, macOS, Linux, Android, iOS可加速 Python 代碼需要額外的 C 語言開發(fā)
PyOxidizer跨平臺(tái)應(yīng)用Windows, macOS, Linux生成獨(dú)立可執(zhí)行文件配置較復(fù)雜
Kivy + Buildozer移動(dòng) AppAndroid, iOS直接開發(fā)移動(dòng) AppUI 組件較少
Chaquopy在 Android 運(yùn)行 Python 代碼Android適配原生 UI僅支持 Android
BeeWare在 iOS 運(yùn)行 Python 代碼iOS, Android適配原生 UI生態(tài)不成熟

如果你的目標(biāo)是 將 Python 代碼打包成 SDK,供 Android/iOS App 調(diào)用,推薦以下方法:

  1. Cython + JNI(Android)
  2. Python 后端 + HTTP API(通用方案)
  3. Chaquopy(僅 Android)
  4. BeeWare(僅 iOS)

2. 方法一:使用 Cython 生成動(dòng)態(tài)鏈接庫(適用于 Android/iOS)

2.1. 原理

Cython 可以將 Python 代碼編譯成 C 代碼,并生成動(dòng)態(tài)鏈接庫(.so 或 .dll),然后可以在 Android 或 iOS 通過 JNI(Java Native Interface)或 FFI(Foreign Function Interface)調(diào)用。

2.2. 步驟

(1)安裝 Cython

pip install cython

(2)編寫 Python 代碼

假設(shè)我們有一個(gè)簡單的 Python 計(jì)算模塊 math_utils.py

def add(a: int, b: int) -> int:
    return a + b

(3)創(chuàng)建 math_utils.pyx

將代碼改成 Cython 代碼(.pyx 文件):

# math_utils.pyx
def add(int a, int b):
    return a + b

(4)編寫 setup.py

from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("math_utils.pyx", language_level="3"),
)

(5)編譯成 .so(Linux/Android) 或 .dylib(macOS/iOS)

python setup.py build_ext --inplace

這會(huì)生成 math_utils.cpython-38-x86_64-linux-gnu.so(Linux) 或 .dylib(macOS)。

(6)在 Java/Kotlin 調(diào)用(Android)

在 Android 項(xiàng)目中加載 .so 文件:

System.loadLibrary("math_utils");

public class MathUtils {
    public native int add(int a, int b);
}

3. 方法二:使用 HTTP API(適用于 Android/iOS)

3.1. 原理

  • 將 Python 代碼部署到服務(wù)器
  • 讓移動(dòng)端 App 通過 HTTP API 訪問 Python 服務(wù)

3.2. 步驟

(1)安裝 FastAPI

pip install fastapi uvicorn

(2)編寫 FastAPI 代碼

from fastapi import FastAPI

app = FastAPI()

@app.get("/add")
def add(a: int, b: int):
    return {"result": a + b}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

(3)運(yùn)行 API 服務(wù)器

uvicorn main:app --host 0.0.0.0 --port 8000

(4)在移動(dòng)端 App 調(diào)用

在 Android/iOS 代碼中請(qǐng)求 API:

URL url = new URL("http://server_ip:8000/add?a=3&b=4");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");

4. 方法三:使用 Chaquopy(適用于 Android)

4.1. 原理

Chaquopy 允許在 Android 項(xiàng)目中直接運(yùn)行 Python 代碼,并與 Java 交互。

4.2. 步驟

(1)在 Android 項(xiàng)目 build.gradle 中添加依賴

dependencies {
    implementation 'com.chaquo.python:gradle:12.0'
}

(2)在 PythonActivity.java 運(yùn)行 Python 代碼

import com.chaquo.python.Python;
import com.chaquo.python.android.AndroidPlatform;

if (!Python.isStarted()) {
    Python.start(new AndroidPlatform(this));
}

Python py = Python.getInstance();
PyObject obj = py.getModule("script").callAttr("add", 3, 5);
System.out.println(obj.toString());

5. 方法四:使用 BeeWare(適用于 iOS)

5.1. 原理

BeeWare 允許在 iOS 上運(yùn)行 Python 代碼,使用 Rubicon-ObjC 進(jìn)行 iOS 交互。

5.2. 步驟

安裝 BeeWare:

pip install briefcase

創(chuàng)建 iOS 項(xiàng)目:

briefcase create iOS

運(yùn)行 iOS 模擬器:

briefcase run iOS

6. 總結(jié)

方案適用平臺(tái)主要優(yōu)點(diǎn)主要缺點(diǎn)
Cython + JNIAndroid, iOS高性能,可本地調(diào)用需編譯 .so/.dylib,較復(fù)雜
HTTP API通用易于擴(kuò)展需要網(wǎng)絡(luò)連接
ChaquopyAndroid直接在 Android 運(yùn)行 Python僅支持 Android
BeeWareiOS直接在 iOS 運(yùn)行 Python生態(tài)不成熟

如果希望 Python 高效運(yùn)行在 App 內(nèi)部,建議使用 Cython + JNI;如果希望 快速集成,建議 用 FastAPI 作為后端。不同應(yīng)用場景可以選擇不同方案,希望本文能幫助你成功將 Python 代碼打包成 SDK!

以上就是將Python代碼打包成可調(diào)用SDK的幾種方法小結(jié)(適用于移動(dòng)端 App)的詳細(xì)內(nèi)容,更多關(guān)于Python代碼打包成SDK的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 利用panda 實(shí)現(xiàn)列聯(lián)表(交叉表)

    python 利用panda 實(shí)現(xiàn)列聯(lián)表(交叉表)

    這篇文章主要介紹了python 利用panda 實(shí)現(xiàn)列聯(lián)表(交叉表),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Jupyter?Notebook的使用詳解

    Jupyter?Notebook的使用詳解

    JupyterNotebook是一個(gè)強(qiáng)大的工具,可以用于數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)等領(lǐng)域的各種任務(wù),該文章介紹了JupyterNotebook的基本使用方法,包括新建和保存Notebook,插入圖像,運(yùn)行代碼,以及許多快捷鍵的使用
    2025-01-01
  • jupyter中torch庫的安裝與虛擬環(huán)境的搭建方式

    jupyter中torch庫的安裝與虛擬環(huán)境的搭建方式

    本文詳細(xì)介紹了如何在Windows系統(tǒng)上創(chuàng)建和配置PyTorch環(huán)境,包括安裝Anaconda、創(chuàng)建虛擬環(huán)境、配置鏡像源、安裝CUDA、查找和安裝PyTorch版本、安裝ipykernel以及在Jupyter Notebook中切換環(huán)境
    2025-02-02
  • pandas DataFrame map方法的實(shí)現(xiàn)

    pandas DataFrame map方法的實(shí)現(xiàn)

    pandas.DataFrame.map()方法用于對(duì) DataFrame 的每個(gè)元素應(yīng)用一個(gè)函數(shù),返回一個(gè)新的 DataFrame,其形狀與原 DataFrame 相同,下面就來介紹一下,感興趣的可以了解一下
    2025-05-05
  • 互斥鎖解決 Python 中多線程共享全局變量的問題(推薦)

    互斥鎖解決 Python 中多線程共享全局變量的問題(推薦)

    這篇文章主要介紹了互斥鎖解決 Python 中多線程共享全局變量的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python的變量和簡單數(shù)字類型詳解

    python的變量和簡單數(shù)字類型詳解

    這篇文章給大家詳細(xì)介紹了python的變量和簡單數(shù)字類型,文中介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們可以參考借鑒
    2021-09-09
  • python數(shù)據(jù)類型判斷type與isinstance的區(qū)別實(shí)例解析

    python數(shù)據(jù)類型判斷type與isinstance的區(qū)別實(shí)例解析

    這篇文章主要介紹了python數(shù)據(jù)類型判斷type與isinstance的區(qū)別實(shí)例解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • python中邏輯與或(and、or)和按位與或異或(&、|、^)區(qū)別

    python中邏輯與或(and、or)和按位與或異或(&、|、^)區(qū)別

    這篇文章主要介紹了python中邏輯與或(and、or)和按位與或異或(&、|、^)區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 一文講解如何查看python腳本所依賴三方包及其版本

    一文講解如何查看python腳本所依賴三方包及其版本

    Python因?yàn)榫哂谐嗟牡谌綆於淮蠹蚁矚g,下面這篇文章主要給大家介紹了關(guān)于如何查看python腳本所依賴三方包及其版本的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • python遍歷文件夾的各種方法大全

    python遍歷文件夾的各種方法大全

    在Python中,可以使用多種方法來多次遍歷文件,下面這篇文章主要給大家介紹了關(guān)于python遍歷文件夾的各種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03

最新評(píng)論

霍山县| 吉安县| 开平市| 衡山县| 肥乡县| 宁强县| 道孚县| 涪陵区| 彰武县| 大港区| 宁晋县| 枞阳县| 榕江县| 桑植县| 建德市| 土默特右旗| 清丰县| 拜泉县| 丹江口市| 饶河县| 古蔺县| 辽宁省| 峡江县| 永川市| 察隅县| 合阳县| 舟曲县| 乌拉特前旗| 绵竹市| 奉节县| 连平县| 高要市| 临沂市| 祁东县| 常州市| 东至县| 唐山市| 徐州市| 门源| 海门市| 高清|