我一直在研究各种开源的GitHub Python项目,比如
http-prompt
和Theano
我无法弄清楚他们的出发点在哪里,以便我可以优雅地调试它们。我是否需要查看__main__
方法的每个文件?
我来自Android背景;所以我正在搜索像AndroidManifest.xml
这样的相关内容,我可以在这里找到代码开始的地方,但我的尝试没有成功。
答案 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
,因此这是一个开始查找的好地方。包裹可以:
scripts
keyword(作为Theano does)定义应安装的脚本;或entry_points
keyword来定义应该向命令行公开的函数(如http-prompt
那样,指向the cli
function)。如果这些都没有提供,那么包可能被设计为import
而不是执行,在这种情况下,请查看用法示例以及根__init__.py
(例如{{} 3}}),它可能会告诉你哪些物体暴露在外面的世界。有关模块结构的更多信息,请参阅Theano's。
然而,Python是一种动态,灵活的语言,所以没有"魔术子弹" 告诉你在哪里看;没有例如例如,必须定义的特定main.py
文件(尽管可以定义__main__.py
,请参阅the Python docs)