Skip to content

Commit d661a10

Browse files
author
Shengjie Xu
committed
[GUI/PySide6] fix executable path lookup for frozen setup
1 parent f26f013 commit d661a10

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/preppipe_gui_pyside6/execution.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,21 @@ def destroy(self):
178178
self.tmpdir = None
179179

180180
def get_final_commands(self):
181-
return [sys.executable, sys.argv[0]] + self.composed_args
181+
# 这里有两种情况:
182+
# 1. 执行的是脚本, sys.executable 指向 Python 解释器, sys.argv[0] 指向脚本路径
183+
# 2. 执行的是打包好的可执行文件, sys.executable 和 sys.argv[0] 都指向可执行文件路径
184+
# 如果执行的是打包好的可执行文件, 我们优先选择相同目录下的 preppipe_cli[.exe],避免闪过窗口
185+
executable_basename = os.path.basename(sys.executable)
186+
argv0_basename = os.path.basename(sys.argv[0])
187+
if executable_basename != argv0_basename:
188+
# 情况1
189+
return [sys.executable, sys.argv[0]] + self.composed_args
190+
# 情况2,尝试寻找 preppipe_cli[.exe]
191+
executable_base, executable_ext = os.path.splitext(executable_basename)
192+
cli_executable_path = os.path.join(os.path.dirname(sys.executable), executable_base + '_cli' + executable_ext)
193+
if os.path.isfile(cli_executable_path):
194+
return [cli_executable_path] + self.composed_args
195+
return [sys.executable] + self.composed_args
182196

183197
def launch(self, wait : bool = False):
184198
if self.state == ExecutionState.FAILED_TEMPDIR_CREATION:

0 commit comments

Comments
 (0)