0

如果我有一个 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,但我想要一种动态的方式来控制这些标志,这些标志可以在运行可执行文件时输入。

谢谢

4

2 回答 2

1

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

然后使用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

于 2013-07-23T16:21:14.940 回答
1
  1. 重命名/opt/local/bin/python/opt/local/bin/python2
  2. 创建一个 shellscript 来解析你的标志并调用python2. 给它命名/opt/local/bin/python
  3. 利润

尽管如果您尝试使用这些选项分发脚本,那将会很痛苦

于 2013-07-23T16:02:49.010 回答