如何获取编译成二进制.exe的python脚本文件路径?

How to get python script file path that has been compiled in binary .exe?

我有 python 脚本 myscript.py,我使用以下命令使用 pyinstaller 编译了它:pyinstaller -F myscript.py。现在我得到一个名为 myscript.exe 的文件。在我的脚本中,有一行我使用以下代码编写来获取此文件的路径:

this_file = os.path.realpath(__file__)
src = this_file
filenameOnly, file_extension = os.path.splitext(src)
exeFile = filenameOnly+'.exe'
print ('exe file to check', exeFile)
if os.path.exists(exeFile):
    src = exeFile
print ('Binary file', src)

但这仅在 .exe 文件与初始 .py 文件同名时才有效。如果我重命名二进制文件,我的脚本将不会检测到该更改

我建议使用 sys.argv 访问命令行参数。 sys.argv 中的第一个值是程序的名称。例如:

...
filenameOnly = sys.argv[0]
exeFile = filenameOnly + '.exe'
...

这里有一些相关的 Whosebug 链接,可以进一步阅读这个主题。

What is "argv", and what does it do?

after compiling python program, how to input arguments

我用 src = sys.executable

解决了这个问题