我有一些代码由于某种原因在 python3.11 中中断,即 paddleocr。我想将它集成到一个用 python3.11 编写的程序中。
虽然有在 Web 服务中运行 paddleocr 的明显方法,并通过该服务或通过该方法从程序的其余部分调用它,但我想知道是否有更好的方法可以做到这一点。
总而言之,有没有一种方法可以比创建 API 更直接地从 python3.11 环境中调用 python3.8 环境中的函数?
在使用
Python 3.8
的环境/程序中运行为特定版本(如 Python 3.11
)编写的 Python 代码确实会带来兼容性问题,特别是对于可能具有与新版本不兼容的依赖项的库(在本例中为 paddleocr
) Python 的。
虽然设置 Web 服务并通过 API 调用它是一种常见的解决方案,但还有一种直接的本地方法:您可以使用 Python 的 subprocess 模块从您的
Python 3.8
程序中运行带有 Python 3.11
的脚本。此方法涉及将 Python 3.8
解释器作为子进程调用,然后运行必要的 Python 脚本或命令。
import subprocess
result = subprocess.run(["path/to/python3.8", "path/to/script.py", "arg1", "arg2"], capture_output=True, text=True)
print(result.stdout)
虽然此方法比 API 更直接,但它的灵活性稍差,并且管理起来更具挑战性,尤其是对于复杂的交互。