python - 如何从您的脚本执行另一个 python 脚本并能够调试?

标签 python debugging command-line runpy

您有包装器 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/

相关文章:

python - 如何列出 python 轮中的文件?

javascript - 我的 JavaScript Post 和 Get 函数与 python 服务器发生故障

python - 创建文件夹时使用 Python 看门狗库查看多个事件

c++ - Visual Studio 调试器正在卸载 DLL 的符号

c# - 我使用哪种方法?

postgresql - 减少 plpgsql 中烦人的通知

ruby - 在 Ruby 脚本中运行命令行命令

c++ - Visual C++ 库目录等效命令行

python - 如何从 Python 运行命令行程序

python - 将字符串和整数列相乘