看板 Python 關於我們 聯絡資訊
大家早 最近在拆工作上的一個 package ,當初前人做這個 package 的時候為了能應用在多種情況所以主 module 裡面有很多 function ,也因此也寫了很多輔助的 module 互相 import 不過這麼做的結果就是讓整個程式太肥,現在要做的東西只需要主 module 裡面的其中一個 function ,因此想特別拉出來做成一個新的輕量化程式 在循線找關聯 module / function 這邊花了滿多時間,即使不直接影響主 module 的 module 或 function 也可能會有間接關係,這讓我好奇有沒有某種插件 (我是用 vscode) 可以在執行 package 的某個 function 時自動追蹤牽扯到的 module 和 function ,並且把沒用到的部分註解掉 (這部分可有可無) 以上,如果還有說明不齊的地方再麻煩和我說了,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.147.126 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1630974896.A.896.html
supremebboy: 就是列出目前的 call stack 吧? 09/07 09:56
嗯沒錯,類似執行 test.py def foo(): print("foo") ================== test2.py from test import foo def fum(): print("fum") def bar(): print("bar") fum() foo() def go(): bar() go() 的時候,插件最終會回傳 (test2.py) go→ (test2.py) bar → (test2.py)fum → (test. ※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/07/2021 10:17:59
moodoa3583: 噢結果貼上來縮排都跑掉了,除了最後的 go() 之外,de09/07 10:20
moodoa3583: f 以下到下一個 def 之前都是縮排 09/07 10:20
※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/07/2021 10:46:09
poototo: profile, print_caller? 09/07 12:36
s0914714: traceback.print_stack()? 09/07 13:21
moodoa3583: http://i.imgur.com/YHSpXEA.jpg 09/07 17:34
moodoa3583: http://i.imgur.com/jVJmqLC.jpg 09/07 17:34
moodoa3583: 感謝各位的回應,試了 print caller (上圖) 和 trackb 09/07 17:35
moodoa3583: ack.print_stack() (下圖) 兩種用法,以結果來說 trac 09/07 17:35
moodoa3583: kback 比較接近,但這樣必須把 trackback 埋在最源頭 09/07 17:35
moodoa3583: 的 function 而不是最末端的執行 function (而我是想 09/07 17:35
moodoa3583: 透過最末端的執行 function 溯源找到所有有牽扯到的 f 09/07 17:35
moodoa3583: unction),以使用上來說有點本末倒置 09/07 17:35
single4565: vsc點function右鍵查看參考? 09/07 20:33
的確是個方法,但現在這個 package 太錯綜複雜,開參考人工一個一個 function 往上追有點耗時,所以才想說有沒有自動的方法 ※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/07/2021 21:43:10
gmccntzx1: 你有試過 call graph 嗎? 可以找找看 pycallgraph2 看 09/07 22:02
gmccntzx1: 怎麼使用。 09/07 22:02
lycantrope: python -m trace -t test2.py 之類?沒仔細研究 09/07 22:15
http://i.imgur.com/DdQWs00.jpg 沒錯!這是我要的,雖然實際拿去追 package 有點小 error 但應該只是程式本身的小問題。感謝你 ※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/08/2021 13:16:02