我有一个与此类似的问题:Similar Question。我有一个 GUI,用户可以在其中输入信息,而其他脚本使用其中的一些信息来运行。每个按钮都有 4 个不同的脚本。我将它们作为子进程运行,这样主 gui 就不会起作用或说它没有响应。这是我所拥有的一个示例,因为自从我使用 PAGE 生成 gui 以来,代码真的很长。
###Main.py#####
import subprocess
def resource_path(relative_path):
#I got this from another post to include images but I'm also using it to include the scripts"
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
Class aclass:
def get_info(self):
global ModelNumber, Serial,SpecFile,dateprint,Oper,outputfolder
ModelNumber=self.Model.get()
Serial=self.SerialNumber.get()
outputfolder=self.TEntry2.get()
SpecFile= self.Spec_File.get()
return ModelNumber,Serial,SpecFile,outputfolder
def First(self):
aclass.get_info(self) #Where I use the resource path function
First_proc = subprocess.Popen([sys.executable, resource_path('first.py'),str(ModelNumber),str(Serial),str(path),str(outputfolder)])
First_proc.wait()
#####First.py#####
import numpy as np
import scipy
from main import aclass
ModelNumber = sys.argv[1]
Serial = sys.argv[2]
path = sys.argv[3]
path_save = sys.argv[4]
我的第二个、第三个和第四个脚本也是如此。
在我的规范文件中,我添加了:
a.datas +=[('first.py','C\\path\\to\\script\\first.py','DATA')]
a.datas +=[('main.py','C\\path\\to\\script\\main.py','DATA')]
这可以编译并且可以工作,但是当我尝试将其转换为 .exe 时,它会崩溃,因为它无法正确导入 first.py 及其自己的库(numpy、scipy ....等)。我已经尝试将它添加到 a.datas 和规范文件中的 runtime_hooks=['first.py'] ......但我无法让它工作。有任何想法吗?我不确定它是否给了我这个错误,因为它是一个子进程。