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

How to detect if program is being compiled by cx_freeze?

我有一个 python 程序可以使用 configparser 读取 ini。我想与 python 文件同名,这就是我使用以下代码的原因:

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

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

如您所见,我有不同的版本,具体取决于我 运行 的模式。 运行 作为 python 脚本 sys.argv 给出的结果与将其用作 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]

是的,你可以查看"sys.frozen"的值,它是由cx_Freeze设置的。

getattr(系统, "frozen", 假)

应该为你做。