如何在任何Python项目中找到代码执行的起点?

时间:2016-06-16 09:38:18

标签: python debugging

我一直在研究各种开源的GitHub Python项目,比如 http-promptTheano

我无法弄清楚他们的出发点在哪里,以便我可以优雅地调试它们。我是否需要查看__main__方法的每个文件?

我来自Android背景;所以我正在搜索像AndroidManifest.xml这样的相关内容,我可以在这里找到代码开始的地方,但我的尝试没有成功。

2 个答案:

答案 0 :(得分:4)

可以通过两种方式加载Python脚本:

  • 导入:import mymodule
  • 按命令行:$ python mymodule.py

在这两种情况下,脚本中的所有代码都会被执行

通常if __name__ == '__main__':定义入口点:

if __name__ == '__main__': 
    print('Started from commandline')
else:
    print('Imported as a module')

在git项目中,您可以尝试这样来查找从命令行启动的所有脚本:

$ git grep "if __name__ ?== ?\W__main__\W"

请注意,您提到的项目不包含任何明确定义的入口点,而是在打包时生成入口点脚本以进行分发(为此目的请参阅setup.py

答案 1 :(得分:1)

清单文件的Python等效项通常为setup.py,因此这是一个开始查找的好地方。包裹可以:

如果这些都没有提供,那么包可能被设计为import而不是执行,在这种情况下,请查看用法示例以及根__init__.py(例如{{} 3}}),它可能会告诉你哪些物体暴露在外面的世界。有关模块结构的更多信息,请参阅Theano's

然而,Python是一种动态,灵活的语言,所以没有"魔术子弹" 告诉你在哪里看;没有例如例如,必须定义的特定main.py文件(尽管可以定义__main__.py,请参阅the Python docs