You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求:寻找递归识别Jupyter/Python文件导入路径的工具或方案

现成解决方案
  • pydeps:专门用来递归解析Python项目的内部依赖,还能生成可视化依赖图。先把Jupyter Notebook转成py文件:jupyter nbconvert --to script your_notebook.ipynb,再跑pydeps --internal your_script.py,就能得到仅包含内部模块的依赖关系,支持输出树形文本或HTML可视化图。
  • AST模块+importlib:别用正则瞎凑,Python的AST(抽象语法树)能精准识别所有导入语法——不管是别名、子模块还是相对导入。写个递归函数就行:用ast.parse解析文件,遍历Import和ImportFrom节点提取模块名,然后递归找这些模块的文件再解析。
  • nbQA + pydeps:不用转py文件,直接对Notebook做静态分析,跑nbqa pydeps your_notebook.ipynb --internal就能解析里面的内部依赖。
开发自定义脚本的价值

如果现有工具满足不了你的特殊需求——比如要适配项目奇怪的文件夹结构、输出特定格式的依赖清单,那自己写脚本并分享到GitHub绝对有价值。很多维护遗留无文档项目的开发者都有同款痛点,轻量化的专用工具会很受欢迎。

开发思路参考:

  • 死磕AST别用正则:AST能准确处理所有合法导入语法,包括import module as m、from .sub import func甚至from mod import *(通配符导入可以直接过滤,或者提示手动处理)。
  • 递归解析要防重复:维护一个已解析的模块集合,避免反复处理同一个文件;对每个导入的本地模块,根据项目根目录和sys.path找到对应的.py文件,再递归解析它的内部导入。
  • 处理Notebook:要么读取.ipynb的cell代码块合并成文本,要么用nbconvert转成py再处理,后者更省心。
  • 输出灵活:可以生成树形文本、JSON清单,甚至简单的依赖图。
实操小技巧
  • 先把项目根目录加入sys.path,不然解析时容易找不到本地模块。
  • 过滤第三方依赖:判断导入的模块文件路径是否在项目目录下,只保留内部的。
  • 相对导入转绝对:用importlib.util.resolve_name把相对导入转成绝对模块名,方便找对应的文件。

内容的提问来源于stack exchange,提问作者LozyLoze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:27:12