如何将标志解析为Python可执行文件



如果我有一个python可执行文件hello_world.py,例如

#!/opt/local/bin/python
print 'hello world!'

我通过呼叫

chmod u=rwx hello_world.py
./hello_world.py

正如预期的那样,但是。。。我如何解析解释器标志,以便在交互模式下运行它?例如

./hello_world.py -i
>>>

我知道我可以编辑shebang,以便传递某些标志,例如#!/opt/local/bin/python -i -d,但我想要一种动态的方式来控制这些标志,这些标志可以在运行可执行文件时输入。

感谢

  1. /opt/local/bin/python重命名为/opt/local/bin/python2
  2. 创建一个shell脚本,解析您的标志并调用python2。将其命名为/opt/local/bin/python
  3. 利润

尽管如果你试图用

这些选项来分发你的脚本,那会很痛苦

您可以在sys.argv中查找-i标志(可能使用argparse模块)。

然后使用code.interactpdb.set_trace()启用交互模式。

一般来说,你的脚本应该是这样的结构:

#!/usr/bin/env python
...
if __name__ == '__main__':
    ...
    # the actual script code
    ...
    if '-i' in sys.argv[1:]:  # or something equivalent
        import code
        local=locals() # or any variables you want to have available
        code.interact(local=local)

提示:

  • 尽量保持if块的轻量级,并将脚本逻辑保持在模块级函数中——这在测试过程中很有用。)
  • #!/usr/bin/env python是传统的跨平台查找python可执行文件的方法

另请参阅:python:从程序运行交互式python shell

最新更新