Python 是一种非常流行的编程语言,因为它具有某些令人满意的特性,如可读性、易学性、灵活性等。
因此,它已广泛应用于计算机编程的各个领域或方面,如脚本、Web 开发、网络安全和机器学习。
Python 有许多库和框架,使其适应这些不同领域的使用,例如,Django 和 Flask 是用于 Web 开发的 Python 框架; Pandas、Numpy、Scikit-learn、PyTorch 等用于机器学习,而 Python 库(如 Scapy、Beautiful Soup 和 Cryptography)用于网络安全。
Python 实际上没有被广泛使用的一个编程领域是移动开发。
这是因为 Python 的执行速度相对较慢(因此,Python 应用程序在低规格的移动设备上可能会遇到困难),也因为 Python 作为一种解释型高级语言,远非也可能不适用于移动操作系统的本地语言(即 Android 的 Java 和 iOS 的 Objective-c/Swift),这些语言通常是编译的中级语言。
然而,Python在移动开发中的这一缺点是许多程序员的问题,因为Python基本上是编程初学者最流行的第一语言,他们可能想深入研究由于数十亿移动而变得非常有利可图的移动开发。世界各地使用的设备。
此外,已经将 Python 语言用于 Web 开发、人工智能或网络安全的专业人士可能出于某种原因也希望将他们的软件转换为移动应用程序。
在学习 Python 并决定创建移动应用程序以将我编写的一些脚本提供给可能发现它们有用的用户之后,这肯定是我面临的一个问题。
然而,虽然使用 Python 进行移动开发并不流行,但并非不可能。事实上,确实存在一些用于使用 Python 进行移动开发的框架和库,其中一些具有相当大的社区。
其中一些是 Python-for-Android、Pymob、PyQT(pyqtdeploy)、Kivy、RenPi 和 Beeware。
其中一些框架还继承了 Python 友好的 UI 开发语法(例如,Kivy 设计语言)。这使得 Python 在用于小型应用程序或快速原型制作时成为一种非常有用的移动应用程序开发语言。
然而,在尝试为移动设备编译或打包完成的 Python 应用程序时会出现很多问题。至少,这是我使用 Kivy 的经历,我的研究表明这是一个普遍遇到的问题。
这个问题的一个原因可能是轻量级 Python 移动库经常没有像 Flutter 和 React Native 这样的流行框架那样利用 Android Studio 复杂的调试资源。
本文进一步探讨了与此打包问题相关的使用 Python 进行的移动开发以及克服这些问题的最佳实践。
Kivy:这实际上是一个跨平台的 Python 框架,允许用户为 windows、mac、Linux、Android 和 iOS 创建应用程序。 Kivy 使用简洁的设计语言来开发在所有平台上都相似的 UI。它使用纯 Python 进行应用程序编程和打包(例如,buildozer 用于将代码部署到特定平台)。
Pyqtdeploy:这提供了一组工具,用于将 PyQt CLI 和 GUI 应用程序或库打包到桌面和移动设备。由于其免费许可,使用此工具打包的项目可以商业化。
Beeware:这是一组用于构建 Python 应用程序的工具,包括 Toga——一个用于跨平台 UI 的工具包,Batavia——一个 Javascript 处理程序,以及用于打包移动和桌面应用程序的公文包。 Beeware 应用程序具有特定于平台的外观和感觉。
虽然开发过程通常是顺畅和直接的,但为任何平台打包 Python 应用程序通常会出现问题。除了移动,我在尝试使用 Pyinstaller 打包 Python exe 文件时也遇到了这个问题。
当在应用程序中使用第三方 python 库时,问题会进一步恶化。
根据我的经验,打包应用程序时出现的这种错误风暴归结为两个主要原因:
Python 移动开发库很少或根本不支持使用 Android 模拟器或 Android 设备进行实时应用程序开发。
使用 Flutter 或 React Native 的移动开发人员会意识到在构建应用程序时使用虚拟或物理设备的帮助。这有助于及早发现各种语法、运行时和兼容性错误,以便快速修复。
然而,对于 python 库,开发人员通常必须先在桌面设备上构建应用程序,然后才能为移动设备打包 APK 版本。
当 Android 或 iOS 工具开始与应用程序代码交互时,这可能会导致很多兼容性问题。
因此,问题在于为桌面环境构建的应用程序正在为移动设备打包。
这看起来相当明显,但开发人员在打包 Python 移动应用程序时必须牢记这一点,因为终端可能不会指出这一点(我就是这种情况)。
这会浪费宝贵的开发时间,甚至会使开发人员感到沮丧而放弃。
使用第三方库。
根据我的经验,我觉得有必要指出这一点;在尝试打包 Python 程序时,我将其创建为 Windows 可执行文件。
令我震惊的是,虽然该程序在 Python 终端上运行良好,但在打包应用程序时,我收到了来自第三方库的不兼容投诉。
将 python 程序打包为移动应用程序时也会发生这种情况。
预计终端可能不会指出所有存在的错误。
研究所用库版本的兼容性。
构建可以适应移动设备而不会导致溢出的动态 UI。
使用任何可用的额外调试命令获取详细的错误报告。
当您的应用程序在您的移动设备上运行时,使用调试应用程序(如 logcat 阅读器)获取额外的终端报告。