你怎么知道python是否已经用-i标志启动了?
根据文档,您可以检查os.environ中的PYTHONINSPECT变量,该变量相当于 -i.但显然它不会以同样的方式工作.
作品:
$ PYTHONINSPECT=1 python -c 'import os; print os.environ["PYTHONINSPECT"]'
Run Code Online (Sandbox Code Playgroud)
不起作用:
$ python -i -c 'import os; print os.environ["PYTHONINSPECT"]'
Run Code Online (Sandbox Code Playgroud)
我问的原因是因为我有一个脚本,如果某些条件失败,则调用sys.exit(-1).这很好,但有时我想使用-i手动调试它.我想我可以学习使用"PYTHONINSPECT = 1 python"而不是"python -i",但如果有一种通用的方法可以做到这一点会很好.
@Jweede 提供的链接 的答案不准确。它应该是:
import os
os.environ['PYTHONINSPECT'] = '1'
Run Code Online (Sandbox Code Playgroud)
只是@Brian 答案的另一种变体:
import os
from ctypes import POINTER, c_int, cast, pythonapi
def in_interactive_inspect_mode():
"""Whether '-i' option is present or PYTHONINSPECT is not empty."""
if os.environ.get('PYTHONINSPECT'): return True
iflag_ptr = cast(pythonapi.Py_InteractiveFlag, POINTER(c_int))
#NOTE: in Python 2.6+ ctypes.pythonapi.Py_InspectFlag > 0
# when PYTHONINSPECT set or '-i' is present
return iflag_ptr.contents.value != 0
Run Code Online (Sandbox Code Playgroud)
请参阅 Python 的main.c。
归档时间: |
|
查看次数: |
1047 次 |
最近记录: |