您有包装器 python 脚本调用另一个 python 脚本,当前使用 os.system('python another.py some-params')
。
您希望能够调试这两个脚本,如果您使用 os.system()
,您将失去调试器,因此使用相同的解释器加载第二个脚本确实有意义开始另一个。
import
没有达到预期效果,因为它没有运行 __main__
。
其他变体,如 exec()
或 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
关于python - 如何从您的脚本执行另一个 python 脚本并能够调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3657955/