【问题标题】:How to programatically detect if code is running in nuitka compiled or python interpreted mode如何以编程方式检测代码是否在 nuitka 编译或 python 解释模式下运行
【发布时间】:2016-08-12 10:45:38
【问题描述】:

谁能告诉我如何检测代码是在 Nuitka 创建的 exe 中运行还是在普通的 python 解释器中运行?

我认为理想情况下我希望有一个“is_nuitka”标志,它在编译时设置为 True,而在未编译时可能根本不存在。

然后可以使用这样的代码:

if '__is_nuitka__' in locals() or '__is_nuitka__' in globals():
    print('debug info: running in nuitka mode')

有什么建议吗?有这样的东西吗?任何替代方法?

【问题讨论】:

  • 我也在为这个问题寻找解决方案。你找到解决方案了吗?

标签: python nuitka


【解决方案1】:

从 Nuitka 0.6.2 开始,你可以使用这个代码:

is_nuitka = "__compiled__" in globals()

【讨论】:

  • 我希望 Nuitka 有类似 sys.pypy_version_info 的东西。随着更多 Python 编译器的创建,检查某些内容是否已编译不一定会继续工作。
【解决方案2】:

第一个想法是检查sys.argv[0]之类的

if '.exe' in sys.argv[0]:
    # compiled

【讨论】:

  • python my_script_to_modify_.exe_files.py 已经打破了你的假设。
  • if sys.argv[0].endswith('.exe') then =)
  • 在 Linux 系统上使用 Nuitka 0.6.15.3,文件扩展名为 .bin,而不是 .exe。最好从 sys 模块中获取一些东西——如果 nuitka 有的话。
猜你喜欢
  • 2010-12-10
  • 1970-01-01
  • 2010-11-14
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
相关资源
最近更新 更多