如何解决冻结后使用 QProcess 运行 Python 脚本
我正在使用 PyQt5 并使用 fbs 冻结应用程序。 该应用程序允许用户运行 Python 脚本。然后我将脚本保存在 Python 文件中并运行 QProcess 来运行该文件。
将运行的脚本由用户编写。 我希望能够运行导入特定库(如 NumPy)的脚本,而无需用户自行安装库。
如何从冻结的 Python 环境中运行 QProcess?这样除了我的应用程序之外,用户无需安装任何东西来运行他们的脚本。
现在,在冻结之后,QProcess 使用安装在机器上的默认 Python 环境。
解决方法
你不能,因为你总是需要:
-
解释器(即 Python)和
-
库的依赖关系(例如,numpy 需要一些 dll)。
他们在另一个答案中提出的建议只有在您安装了解释脚本的 python 时才可行。
,您可以使用 importlib.machinery.SourceFileLoader
user_script.py
import numpy as np
print("hello from user_script.py")
print(np.zeros(1))
app.py
from importlib.machinery import SourceFileLoader
def load_user_script(path):
SourceFileLoader("user_module",path).load_module()
要在单独的线程中运行,请使用 QThread
from importlib.machinery import SourceFileLoader
from PyQt5 import QtCore
class Worker(QtCore.QThread):
def __init__(self,path,parent = None):
super().__init__(parent)
self._path = path
def run(self):
SourceFileLoader("user_module",self._path).load_module()
worker = Worker(path)
worker.start()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。