使用BeeWare实现iOS调用Python方式
作者:培根芝士
1、准备工作
1.1、安装Python
1.2、设置虚拟环境
我们现在将创建一个虚拟环境——一个“沙盒”,如果我们将软件包安装到虚拟环境中,我们计算机上的任何其他Python项目将不会受到影响。
如果我们把虚拟环境搞得一团糟,我们将能够简单地删除它并重新开始,而不会影响我们计算机上的任何其他Python项目,也无需重新安装Python。
mkdir beeware-tutorial cd beeware-tutorial python3 -m venv beeware-venv source beeware-venv/bin/activate
如果生效,终端提示符应该被更改,它应该有一个(beeware-venv)前缀。表明目前处于BeeWare虚拟环境中。
如果不是,请重新运行最后一个命令(activate命令)以重新激活虚拟环境。
2、创建BeeWare应用程序
2.1、安装BeeWare工具
BeeWare可用于打包应用程序以分发给最终用户,但它也可用于引导新项目。
确保你处于beeware-venv虚拟环境,然后运行:
python -m pip install briefcase
2.2、引导一个新项目
我们将使用以下命令创建一个名为Hello World的应用程序:
briefcase new
BeeWare将要求我们提供新应用程序的一些细节:
- Formal Name - 接受默认值: Hello World.
- App Name - 接受默认值:helloworld。
- Bundle - 如果您拥有自己的域名,请按相反顺序输入该域名。(例如,如果您拥有“cupcakes.com”域名,请输入com.cupcakes作为包名)。如果您没有自己的域名,请接受默认包名(com.example)。
- Project Name - 接受默认值: Hello World.
- Description - 描述信息,接受默认值
- Author - 输入您自己的姓名。
- Author’s email - 输入您自己的电子邮件地址。这将在配置文件、帮助文本以及将应用程序提交到应用程序商店时需要电子邮件的任何地方中使用。
- URL - 您应用程序的登录页面的URL。同样,如果您拥有自己的域名,请在该域名(包括https://)输入URL。否则,只需接受默认URL(https://example.com/helloworld)。此URL不需要实际存在(目前);只有当您将应用程序发布到应用程序商店时,它才会被使用。
- License - 接受默认许可证:BSD。这不会影响项目运行。
- GUI framework - 接受默认选项,Toga(BeeWare自己的GUI工具包)。
BeeWare将生成一个项目架构:
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
这个架构实际上是一个功能齐全的应用程序,没有添加任何其他内容。
src目录包含应用程序的所有代码,tests目录包含初始测试用例,pyproject.toml文件描述了如何打包应用程序进行分发,包含刚刚提供给BeeWare的配置详细信息。
2.3、项目架构
在src/helloworld目录中,您应该看到3个文件:__init__.py、__main__.py和app.py。
- __init__.py 将helloworld目录标记为可导入的Python模块。它是一个空文件;它存在的事实告诉Python解释器,helloworld目录定义了一个模块。
- __main__.py 将helloworld模块标记为一个可执行模块类型
- app.py 包含创建应用程序窗口的逻辑
3、部署到iOS
要编译iOS应用程序,我们需要Xcode
3.1、创建iOS应用程序脚手架
briefcase create iOS
完成后,我们将有一个build/helloworld/ios/xcode目录,其中包含Xcode项目,以及应用程序所需的支持库和应用程序代码。
3.2、编译iOS应用程序:
briefcase build iOS
3.3、运行iOS应用程序:
briefcase run iOS
也可以直接用Xcode打开项目进行编译运行。
4、添加第三方依赖库
以requests为例
在app.py添加import requests
此时运行时报错:
ModuleNotFoundError: No module named 'requests'
在app的根目录中有一个名为pyproject.toml的文件。这个文件包含第一次运行 briefcase new命令时提供的所有配置细节
修改requires配置
requires = [ "requests", ]
当Briefcase构建app时,会自动运行pip install requests命令把requests包安装到app中。
将修改pyproject.toml后,执行下面命令升级已打包app中的依赖项:
briefcase update iOS
升级完成后,使用briefcase build iOS和 briefcase run iOS命令重新运行
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。