如何检测程序是否由cx_freeze编译?

3

我有一个使用configparser读取INI文件的Python程序。我希望使用与Python文件相同的名称,因此我使用以下代码:

# nativ python
#fileName = sys.argv[0].split('.')[0]

# compiled python
fileName = sys.argv[0].split('\\')[-1]
fileName = fileName.split('.')[0]

您可以看到,我有不同的版本,取决于我运行它的模式。使用sys.argv作为Python脚本运行会产生与使用exe运行不同的结果。我手动切换这个选项,有时会忘记更改它,导致需要重新编译整个程序。但我也看到了其他事情,比如:

if sys.platform == "win64":
    base = "Win64GUI"
else:
    base = "Win32GUI"

我想知道是否可以通过类似于以下内容的方法检测源代码是否正在被cx_freeze编译:
if getting_compiled():
    fileName = sys.argv[0].split('.')[0]
else:
    fileName = sys.argv[0].split('\\')[-1]
    fileName = fileName.split('.')[0]
1个回答

6

是的,你可以检查"sys.frozen"的值,这个值是由cx_Freeze设置的。

你可以使用getattr(sys, "frozen", False)来实现。


1
好的一点是,即使我切换到pyinstaller后,这仍然可以正常工作。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接