我正在尝试使用py2exe将python脚本编译成可执行文件。 我已经设置了setup.py文件,就像文档中描述的那样:
from distutils.core import setup
import py2exe
setup(console=['agent.py', 'test.py'])
agent.py文件只使用subprocess.Popen打开另一个脚本:
import sys
import subprocess
print 'is this working?'
child = subprocess.Popen([sys.executable, 'test.py'])
test.py文件是
while 0 == 0:
print 'test'
当它作为python脚本运行时,它工作正常。当作为py2exe编译的可执行文件运行时,它不会运行。
当我尝试将agent.py中的文件引用从“test.py”更改为“test.exe”时,运行已编译的agent.exe只会打印“这是否正常?”在一个无限循环。我做错了什么?
答案 0 :(得分:2)
sys.executable
指向agent.exe
而不是python.exe
。您需要将Popen
更改为:
child = subprocess.Popen(['test.exe'])
运行已编译的可执行文件时。您可以使用hasattr(sys, "frozen")
来确定您是处于冻结(py2exe)还是不是(Python脚本)模式。
答案 1 :(得分:0)
这不太奏效,但我所要做的就是用完整的路径名替换你的答案。谢谢!这很有效:
app_path = os.path.realpath(os.path.join(
os.path.dirname(sys.executable), 'test.exe'))
child = subprocess.Popen(app_path)