您有包装器 python 脚本正在调用另一个 python 脚本,当前正在使用os.system('python another.py some-params')
.
您希望能够调试这两个脚本,并且如果您使用os.system()
您将丢失调试器,因此使用相同的解释器加载第二个脚本而不是启动另一个脚本确实有意义。
import
没有达到预期的效果,因为它没有运行__main__
.
其他变体,例如exec()
or runpy
接缝错过argv
参数。
您认为这个问题的解决方案是什么?
我正在寻找一种不需要您修改的解决方案another.py
脚本。可能这需要修改sys.argv
在执行之前。
到目前为止,我找到了一个仅适用于 Python 2.7+ 的解决方案(runpy.run_path() 是在 Python 2.7 中引入的)。
如果您能找到一个适用于 2.6(甚至 2.5)的版本,欢迎您发布它。
import runpy, sys
saved_argv = sys.argv
... # patch sys.argv[1:] and load new command line parameters
# run_path() does change only sys.argv[0] but restores it
runpy.run_path('another.py', run_name="__main__")
sys.argv = saved_argv # restore sys.argv
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)