使用BeeWare实现iOS调用Python方式

 更新时间:2023年12月19日 09:09:15   作者:培根芝士  
这篇文章主要介绍了使用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命令重新运行

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Python之数据序列化(json、pickle、shelve)

    详解Python之数据序列化(json、pickle、shelve)

    本篇文章主要介绍了Python之数据序列化,本节要介绍的就是Python内置的几个用于进行数据序列化的模块,有兴趣的可以了解一下。
    2017-03-03
  • Python 运算符Inplace 与Standard 

    Python 运算符Inplace 与Standard 

    这篇文章主要介绍了Python 运算符Inplace 与Standard,nplace运算符的行为类似于普通运算符,只是它们在可变和不可变目标的情况下以不同的方式运行
    2022-09-09
  • 利用python实现xml与数据库读取转换的方法

    利用python实现xml与数据库读取转换的方法

    这篇文章主要给大家介绍了关于利用python实现xml与数据库读取转换的方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • python多线程并发让两个LED同时亮的方法

    python多线程并发让两个LED同时亮的方法

    今天小编就为大家分享一篇python多线程并发让两个LED同时亮的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python实现可将字符转换成大写的tcp服务器实例

    python实现可将字符转换成大写的tcp服务器实例

    这篇文章主要介绍了python实现可将字符转换成大写的tcp服务器,通过tcp服务器端实现针对字符的转换与返回功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • termux中matplotlib无法显示中文问题的解决方法

    termux中matplotlib无法显示中文问题的解决方法

    这篇文章主要介绍了termux中matplotlib无法显示中文问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Django基于Token的验证使用的实现

    Django基于Token的验证使用的实现

    本文主要介绍了Django基于Token的验证使用的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • python中sort()和sorted()的区别及用法实例

    python中sort()和sorted()的区别及用法实例

    我们通常会遇到对数据库中的数据进行排序的问题,下面这篇文章主要给大家介绍了关于python中sort()和sorted()的区别及用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python 中的类class实例详解

    Python 中的类class实例详解

    这段文章详细介绍了Python面向对象编程的核心概念,文章还强调了类的命名规范、实例方法与属性的区别、私有属性的定义及使用@property简化数据类定义的重要性,感兴趣的朋友跟随小编一起看看吧
    2026-05-05
  • Python requests请求响应以流stream的方式实现打印输出

    Python requests请求响应以流stream的方式实现打印输出

    在使用requests库时,接收响应并打印内容需注意:若响应内容过大,应设置合理的chunk_size参数以避免内存溢出,当设置了stream=True时,不能使用response.text或response.content属性读取响应内容,否则会抛出异常
    2025-10-10

最新评论