这些选项来分发你的脚本,那会很痛苦
如果我有一个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
,但我想要一种动态的方式来控制这些标志,这些标志可以在运行可执行文件时输入。
感谢
- 将
/opt/local/bin/python
重命名为/opt/local/bin/python2
- 创建一个shell脚本,解析您的标志并调用
python2
。将其命名为/opt/local/bin/python
- 利润
尽管如果你试图用
您可以在sys.argv
中查找-i标志(可能使用argparse
模块)。
然后使用code.interact
或pdb.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