我目前正在构建一个 Flutter 应用程序,它使用 SeriousPython 包来利用 OpenCV 和 Numpy 进行图像分析,并且我正在我的 iPhone 上进行测试。我认为我已经接近它的功能,但我收到了一个我无法识别的错误。 XCode 终端打印此内容:
Traceback (most recent call last):
File "/var/folders/vf/1glx41690vgcd8c_6w6b10xddr5ygm/T/serious_python_tempKpvX8e/imageScan.py", line 16, in <module>
File "/var/folders/vf/1glx41690vgcd8c_6w6b10xddr5ygm/T/serious_python_tempKpvX8e/imageScan.py", line 11, in ensure_packages
File "/Users/appveyor/projects/serious-python/dist/root/python3/lib/python3.11/subprocess.py", line 408, in check_call
File "/Users/appveyor/projects/serious-python/dist/root/python3/lib/python3.11/subprocess.py", line 389, in call
File "/Users/appveyor/projects/serious-python/dist/root/python3/lib/python3.11/subprocess.py", line 1026, in __init__
File "/Users/appveyor/projects/serious-python/dist/root/python3/lib/python3.11/subprocess.py", line 1883, in _execute_child
TypeError: fork_exec() takes 0 positional arguments but 23 were given
Python program completed with error.
关于如何处理此错误的任何想法?
fork_exec()
我尝试创建一个全新的 python 环境并确保通过 pip 或 Kivy(对于 Numpy)安装所有依赖项)
I've tried creating a brand new python environment and ensuring all dependencies are installed, either through pip or Kivy (for Numpy)
这个错误
"TypeError: fork_exec() takes 0 positional arguments but 23 were given"
意味着你试图在一个不支持
fork_exec
系统调用的环境中运行使用了多进程的 Python 代码。 iOS 出于安全原因不允许使用
fork
。
以下是解决方案:
1. 不使用多进程:
- 检查库文档: 许多库(包括 OpenCV)提供禁用多进程或切换到多线程的选项。 查看文档或源代码,找到并使用这些选项。
- 重构代码: 如果可能,尝试修改代码以避免使用多进程。 例如,使用循环处理图像,而不是并行处理。
2. 使用支持 iOS 的替代方案:
-
使用 Flutter 插件:
查找执行图像分析的 Flutter 插件,可能使用平台通道调用原生 iOS 库。 这可以避免 Python 和
fork_exec
问题。 例如,image_picker
和camera
插件可以帮助你访问和处理图像。 - 使用 TensorFlow Lite: 如果你需要更高级的图像分析,请考虑使用 TensorFlow Lite。 它可以在移动设备上运行预先训练的机器学习模型,并且有 Flutter 插件可用。
3. 使用其他平台进行开发和测试:
-
Android 模拟器或设备:
Android 支持
fork_exec
,因此你可以在开发过程中使用 Android 设备或模拟器。 - 在 iOS 上部署最终版本: 一旦你完成了开发和测试,并且确保代码不再依赖于多进程,你就可以将应用程序部署到 iOS 设备上。
请记住: 直接在 iOS 上运行 Python 代码(例如使用 SeriousPython)通常不是构建 Flutter 应用程序的最佳方法。 Flutter 插件和原生库提供了更好的性能和集成度。
标签:python,ios,iphone,flutter,mobile From: 78769879