簡體   English   中英

如何找出任何Python項目中代碼執行的起點?

[英]How to find out the starting point of code execution in any Python project?

我一直在研究各種開源GitHub Python項目,例如http-promptTheano

我無法弄清楚它們的起點在哪里,以便可以優雅地調試它們。 我是否需要在每個文件中查找__main__方法?

我來自Android背景; 所以我在搜索類似AndroidManifest.xml相關內容,從那里我可以從代碼的開始位置獲得想法,但是嘗試失敗。

可以通過兩種方式加載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

清單文件的Python等效項通常是setup.py ,因此這是開始查找的好地方。 包裹可以:

如果兩者都不提供,則該包可能被設計為import而不是執行,在這種情況下,請查看用法示例以及__init__.py根目錄(例如Theano的根目錄),它可能會告訴您什么對象是暴露於外界。 有關模塊結構的更多信息,請參見Python文檔

但是,Python是一種動態,靈活的語言,因此沒有“魔術子彈”可以告訴您在哪里查看。 有沒有例如特定main.py必須定義的文件,例如(雖然有__main__.py 可以定義,見什么是__main__.py? )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM