使用BeeWare實(shí)現(xiàn)iOS調(diào)用Python方式
1、準(zhǔn)備工作
1.1、安裝Python
1.2、設(shè)置虛擬環(huán)境
我們現(xiàn)在將創(chuàng)建一個(gè)虛擬環(huán)境——一個(gè)“沙盒”,如果我們將軟件包安裝到虛擬環(huán)境中,我們計(jì)算機(jī)上的任何其他Python項(xiàng)目將不會(huì)受到影響。
如果我們把虛擬環(huán)境搞得一團(tuán)糟,我們將能夠簡(jiǎn)單地刪除它并重新開始,而不會(huì)影響我們計(jì)算機(jī)上的任何其他Python項(xiàng)目,也無需重新安裝Python。
mkdir beeware-tutorial cd beeware-tutorial python3 -m venv beeware-venv source beeware-venv/bin/activate
如果生效,終端提示符應(yīng)該被更改,它應(yīng)該有一個(gè)(beeware-venv)前綴。表明目前處于BeeWare虛擬環(huán)境中。
如果不是,請(qǐng)重新運(yùn)行最后一個(gè)命令(activate命令)以重新激活虛擬環(huán)境。
2、創(chuàng)建BeeWare應(yīng)用程序
2.1、安裝BeeWare工具
BeeWare可用于打包應(yīng)用程序以分發(fā)給最終用戶,但它也可用于引導(dǎo)新項(xiàng)目。
確保你處于beeware-venv虛擬環(huán)境,然后運(yùn)行:
python -m pip install briefcase
2.2、引導(dǎo)一個(gè)新項(xiàng)目
我們將使用以下命令創(chuàng)建一個(gè)名為Hello World的應(yīng)用程序:
briefcase new
BeeWare將要求我們提供新應(yīng)用程序的一些細(xì)節(jié):
- Formal Name - 接受默認(rèn)值: Hello World.
- App Name - 接受默認(rèn)值:helloworld。
- Bundle - 如果您擁有自己的域名,請(qǐng)按相反順序輸入該域名。(例如,如果您擁有“cupcakes.com”域名,請(qǐng)輸入com.cupcakes作為包名)。如果您沒有自己的域名,請(qǐng)接受默認(rèn)包名(com.example)。
- Project Name - 接受默認(rèn)值: Hello World.
- Description - 描述信息,接受默認(rèn)值
- Author - 輸入您自己的姓名。
- Author’s email - 輸入您自己的電子郵件地址。這將在配置文件、幫助文本以及將應(yīng)用程序提交到應(yīng)用程序商店時(shí)需要電子郵件的任何地方中使用。
- URL - 您應(yīng)用程序的登錄頁(yè)面的URL。同樣,如果您擁有自己的域名,請(qǐng)?jiān)谠撚蛎ò╤ttps://)輸入U(xiǎn)RL。否則,只需接受默認(rèn)URL(https://example.com/helloworld)。此URL不需要實(shí)際存在(目前);只有當(dāng)您將應(yīng)用程序發(fā)布到應(yīng)用程序商店時(shí),它才會(huì)被使用。
- License - 接受默認(rèn)許可證:BSD。這不會(huì)影響項(xiàng)目運(yùn)行。
- GUI framework - 接受默認(rèn)選項(xiàng),Toga(BeeWare自己的GUI工具包)。
BeeWare將生成一個(gè)項(xiàng)目架構(gòu):
beeware-tutorial/ beeware-venv/ ... helloworld/ CHANGELOG LICENSE README.rst pyproject.toml src/ helloworld/ resources/ helloworld.icns helloworld.ico helloworld.png __init__.py __main__.py app.py tests/ __init__.py helloworld.py test_app.py
這個(gè)架構(gòu)實(shí)際上是一個(gè)功能齊全的應(yīng)用程序,沒有添加任何其他內(nèi)容。
src目錄包含應(yīng)用程序的所有代碼,tests目錄包含初始測(cè)試用例,pyproject.toml文件描述了如何打包應(yīng)用程序進(jìn)行分發(fā),包含剛剛提供給BeeWare的配置詳細(xì)信息。
2.3、項(xiàng)目架構(gòu)
在src/helloworld目錄中,您應(yīng)該看到3個(gè)文件:__init__.py、__main__.py和app.py。
- __init__.py 將helloworld目錄標(biāo)記為可導(dǎo)入的Python模塊。它是一個(gè)空文件;它存在的事實(shí)告訴Python解釋器,helloworld目錄定義了一個(gè)模塊。
- __main__.py 將helloworld模塊標(biāo)記為一個(gè)可執(zhí)行模塊類型
- app.py 包含創(chuàng)建應(yīng)用程序窗口的邏輯
3、部署到iOS
要編譯iOS應(yīng)用程序,我們需要Xcode
3.1、創(chuàng)建iOS應(yīng)用程序腳手架
briefcase create iOS
完成后,我們將有一個(gè)build/helloworld/ios/xcode目錄,其中包含Xcode項(xiàng)目,以及應(yīng)用程序所需的支持庫(kù)和應(yīng)用程序代碼。
3.2、編譯iOS應(yīng)用程序:
briefcase build iOS
3.3、運(yùn)行iOS應(yīng)用程序:
briefcase run iOS
也可以直接用Xcode打開項(xiàng)目進(jìn)行編譯運(yùn)行。
4、添加第三方依賴庫(kù)
以requests為例
在app.py添加import requests
此時(shí)運(yùn)行時(shí)報(bào)錯(cuò):
ModuleNotFoundError: No module named 'requests'
在app的根目錄中有一個(gè)名為pyproject.toml的文件。這個(gè)文件包含第一次運(yùn)行 briefcase new命令時(shí)提供的所有配置細(xì)節(jié)
修改requires配置
requires = [ "requests", ]
當(dāng)Briefcase構(gòu)建app時(shí),會(huì)自動(dòng)運(yùn)行pip install requests命令把requests包安裝到app中。
將修改pyproject.toml后,執(zhí)行下面命令升級(jí)已打包app中的依賴項(xiàng):
briefcase update iOS
升級(jí)完成后,使用briefcase build iOS和 briefcase run iOS命令重新運(yùn)行
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python+Selenium實(shí)現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium實(shí)現(xiàn)在 Geoserver批量發(fā)布來自Mongo中的矢量數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-07-07利用Python封裝MySQLHelper類實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查功能
Python 連接 MySQL 的方法有很多,常用的有 pymysql 和 mysql-connector-python 兩種庫(kù),本文主要介紹了如何封裝一個(gè)MySQLHelper類,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的增刪改查功能,感興趣的可以了解一下2023-06-06Python3中map(),reduce(),filter()的詳細(xì)用法
這篇文章主要介紹了Python3中map(),reduce(),filter()的詳細(xì)用法,Python3中的map()、reduce()、filter()?這3個(gè)一般是用于對(duì)序列進(jìn)行操作的內(nèi)置函數(shù),它們經(jīng)常需要與?匿名函數(shù)?lambda?聯(lián)合起來使用2022-08-08Python數(shù)據(jù)類型-序列sequence
這篇文章主要介紹了Python數(shù)據(jù)類型-序列sequence,在前面,我們已經(jīng)對(duì)Python學(xué)習(xí)做了系統(tǒng)的知識(shí)梳理(Python思維導(dǎo)圖),我們接下來把知識(shí)點(diǎn)分節(jié)進(jìn)行細(xì)講。這一節(jié),我們講解序列,需要的朋友可以參考下2022-01-01python數(shù)字圖像處理之高級(jí)濾波代碼詳解
這篇文章主要介紹了python數(shù)字圖像處理之高級(jí)濾波代碼詳解,介紹了許多對(duì)圖像處理的濾波方法,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Python基礎(chǔ)語言學(xué)習(xí)筆記總結(jié)(精華)
給大家分享一篇關(guān)于Python基礎(chǔ)學(xué)習(xí)內(nèi)容的學(xué)習(xí)筆記整理總結(jié)篇,里面匯集了學(xué)習(xí)Python基礎(chǔ)語言的難點(diǎn)和技巧,分享給大家。2017-11-11Python 帶有參數(shù)的裝飾器實(shí)例代碼詳解
這篇文章主要介紹了Python 裝飾器,帶有參數(shù)的裝飾器實(shí)例代碼詳解,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12