Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将主脚本和子脚本转换为可执行文件_Python_Python 3.x_Pyinstaller_Executable_Pysimplegui - Fatal编程技术网

Python 将主脚本和子脚本转换为可执行文件

Python 将主脚本和子脚本转换为可执行文件,python,python-3.x,pyinstaller,executable,pysimplegui,Python,Python 3.x,Pyinstaller,Executable,Pysimplegui,当我运行下面的代码时,子脚本不再执行。在主脚本和其他子脚本转换为.exe后,如何使它们工作 我使用PysimpleGUI创建了一个主脚本,当我使用subprocess 当我使用pyinstaller import PySimpleGUI as sg import subprocess def A(): path = 'C:/python_work/' os.chdir(path) subprocess.call(['python', 'scripta.py'])

当我运行下面的代码时,子脚本不再执行。在主脚本和其他子脚本转换为.exe后,如何使它们工作

我使用
PysimpleGUI
创建了一个主脚本,当我使用
subprocess

当我使用
pyinstaller

import PySimpleGUI as sg
import subprocess
def A():
    path = 'C:/python_work/'
    os.chdir(path)
    subprocess.call(['python', 'scripta.py'])

    sg.PopupOK('All Done!')
def B():
    path = 'C:/python_work/'
    os.chdir(path)
    subprocess.call(['python', 'scriptb.py'])
    sg.PopupOK('Done')
func_dict = {'A':1, 'B':2}    
我尝试了一种导入脚本的方法,但每次它都只是运行脚本,而不是等待GUI提示

作为说明,我尝试进入子脚本并利用:

    print('hello world')
if __name__ == "__main__":  

此方法不起作用,脚本有300行,不喜欢放入def

中。pyinstaller到.exe文件后,内部权限和操作系统文件路径似乎存在问题

我们通过从内部工具键入的.bat文件自动启动脚本来解决这个问题。这要求所有导入都与安装一起保存在zip文件夹中


这不是一个理想的解决方案,但确实有效。

看来子流程是关键所在。你用谷歌搜索pyinstaller和子流程了吗?当我这么做的时候,我把这个作为第一个链接,它似乎解释了你为什么会有问题。一定要小心,谢谢!这实际上并没有解决问题,但已经开始为我指明了正确的方向。似乎任何操作系统路径都不起作用,这可能就是脚本不起作用的原因。最后,我们将以脚本形式保存它们,并使用.Bat文件自动加载它们哦,路径!我没想过。顺便说一句,为了以防万一,我总是在我的路径前面加上r''。path=r'c:/python/,那么您就不必担心任何方向的斜杠了。很高兴你至少在一个积极的方向上!在您的示例中,如果您不尝试使用os.chdir,而是将完整路径传递给您的子流程,会发生什么情况?我从不出于习惯而使用相对路径。与其只传递“scripta.py”,不如包含它的整个路径?