Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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_Exe_Pyinstaller - Fatal编程技术网

有没有一种方法可以生成一个运行python文件的可执行文件,在该文件中执行不同的python文件?

有没有一种方法可以生成一个运行python文件的可执行文件,在该文件中执行不同的python文件?,python,exe,pyinstaller,Python,Exe,Pyinstaller,我目前正在开发一个大型python项目,我想创建一个启动main.py文件的.exe文件。我有一个名为ultimate_launcher.py的文件,其中包含以下代码: exec(打开(“main.py”).read()) 这是我在堆栈溢出上找到的解决方案。它作为.py文件运行良好,但当我使用pyinstaller将其转换为.exe时,它有一个“致命”错误 我不希望我的项目的其余部分被放入.exe,因为我仍在开发过程中。 所以我的问题是如何生成一个只引用main.py文件的.exe,这样当它被

我目前正在开发一个大型python项目,我想创建一个启动main.py文件的.exe文件。我有一个名为ultimate_launcher.py的文件,其中包含以下代码:

exec(打开(“main.py”).read())
这是我在堆栈溢出上找到的解决方案。它作为.py文件运行良好,但当我使用pyinstaller将其转换为.exe时,它有一个“致命”错误

我不希望我的项目的其余部分被放入.exe,因为我仍在开发过程中。 所以我的问题是如何生成一个只引用main.py文件的.exe,这样当它被更新时,我就不必重新生成.exe文件了


我相信有一种方法可以实现此线程中的详细说明:

编辑: 这很有效

import subprocess
f = open("c:\\temp\\temp.py", "w")
f.write(open("main.py").read())
f.close()
subprocess.call("\"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python37_64\\Scripts\\pyinstaller.exe\" --distpath \"c:\\temp\" c:\\temp\\temp.py " )
subprocess.call("C:\\temp\\temp\\temp.exe")

谢谢,但解决方案并不好,因为我需要的是main.py的“快捷方式”,因为整个项目中存在大量导入混乱。有没有办法做到这一点?我认为这与运行exe时的编译有关。我在想也许可以让你的exe先创建一个加载main的.py文件,然后在创建的.py文件上运行你的pyinstaller命令并触发新的exe?你的意思是让它创建一个导入main的文件,然后生成一个.exe吗?只是我现在无法自己测试它。如果我回到我的电脑时你仍然卡在那里,我会亲自尝试。仍然是相同的致命错误,如果我运行.py文件,它在f=open(“c:\\temp\\temp.py”,“w”)中找不到“c:\\temp\\temp.py”目录
import subprocess
f = open("c:\\temp\\temp.py", "w")
f.write(open("main.py").read())
f.close()
subprocess.call("\"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python37_64\\Scripts\\pyinstaller.exe\" --distpath \"c:\\temp\" c:\\temp\\temp.py " )
subprocess.call("C:\\temp\\temp\\temp.exe")