问题 更快地浏览大型Python代码库


作为程序员,我们阅读的内容比编写的要多。我开始在一家使用几个“大”Python软件包的公司工作;具有高KLOC的包裹或包裹系列。例证:Zope。

我的问题是我无法快速/轻松地浏览此代码库。我目前的策略是

  • 我开始阅读一个我需要改变/理解的模块
  • 我打了一个我需要了解更多的导入
  • 我通过在导入和回显模块之后放置Python调试(pdb)语句来找出导入的源代码的位置,它告诉我它的源文件
  • 我导航到它,在shell或Vim文件资源管理器中。
  • 大部分时间模块本身都会导入更多的模块,在我知道之前我已经“在我的盘子上”有10KLOC

或者:

  • 我看到了一个我需要了解更多的方法/类
  • 我在整个代码库中对该方法/类的定义进行搜索(ack-grep)(这可能很痛苦,因为代码库部分在〜/ .buildout-eggs中)
  • 我找到一个或多个定义该方法/类的代码
  • 我必须推断出哪一个是我需要阅读的

这花费了大量时间,这对于大型代码库来说是可以理解的。但我感觉到了 导航 一个庞大而未知的Python代码库是一个常见的问题。

所以我正在为这个问题寻找技术工具或战略解决方案。 ...

我只是 不能 想象一下使用上述策略的硬核Python程序员。


11443
2017-08-02 13:07


起源

github.com/mkomitee/vim-gf-python 您可能会感兴趣,或者更简单: vim.wikia.com/wiki/Automatically_add_Python_paths_to_Vim_path - Randy Morris
哈哈,正如他们所说的那样,“第一世界的问题”......如果我们能用C中的项目做到这一点(我们通常不能除非原始机器代码是你的一杯茶),KLOC可能会接近100K; p - Darren Ringer


答案:


在Vim上,我喜欢NERDTree(文件浏览器)和taglist.vim(源代码浏览器 - > http://www.vim.org/scripts/script.php?script_id=273

同样在Vim中,您可以使用CTRL-]跳转到定义(:h CTRL-]):

  1. 下载旺盛的ctags http://ctags.sourceforge.net/
  2. 按照安装说明将其放在PATH上的某个位置
  3. 从源代码的'root'目录,从shell创建一个标签文件:“ctags -R”
  4. (确保你有:设置noautochdir,并确保:pwd是 root 步骤3)中的目录
  5. 进入Vim,将光标移到某个函数或类名上,按CTRL-]

默认情况下,如果标记有多个匹配项,则会显示导入的所有位置以及声明的位置

如果标签只有一个匹配,它会立即跳转到它

...然后使用Ctrl + O和Ctrl + I从您所在的位置来回移动

(对你使用的特定库的源代码重复上面的步骤,我通常会打开一个单独的Vim窗口来研究东西)


9
2017-08-02 19:44



为繁荣的Ctags +1。最初的“IDE”是 vi 加 ctags,和 vim 甚至比 vi 而且经常使用的Ctags比原版更好 ctags。 - steveha
注意 ctags -R 可能无法在OSX上运行,OSX随附版本的 ctags 没有 -R 选项。看到 stackoverflow.com/questions/8996387/...。 - nofinator


我用ipython的?命令

你只需要弄清楚如何导入你想要寻找的东西,然后添加?到模块或类或函数或方法名称的末尾以查看其源代码。命令完成也有助于找出长名称。


5
2017-08-02 13:18





尝试红丸: https://github.com/klen/python-mode


-1
2017-08-24 17:40



这是一个糟糕的答案。它是1)链接只回答2)海报自己的项目3)已经死了。 - Ami Tavory
更新:这个链接没有死。我听说过很多关于python-mode的好东西。我已经使用它几天了,非常喜欢它。 - Tim Stewart