显示模块依赖项
pydeps的Python项目详细描述
python模块依赖可视化。此包安装pydeps 命令,通常的用法是从命令行使用它。
版本1.7.3包含一个新标志-xx或--exclude-exact,它与--exclude标志的功能匹配, 除非需要完全匹配,否则-xx foo.bar将排除foo.bar,但不排除foo.bar.blob(感谢 @公关部的Avenzaoleg)
版本1.7.2包含一个新标志--no-output,它阻止创建.svg/.png文件。
1.7.1版本修复了.pydeps文件中的排除项(感谢@eqvis提供了错误报告)。
版本1.7.0中的新功能:新的--reverse标志反转依赖关系图中箭头的方向,因此它们指向导入的模块而不是导入的模块(感谢@goetzk提供的错误报告和@tobiasmaier提供的PR!).
新版本1.5.0:python 3支持(感谢@eight04提供的pr)
版本1.3.4中的新功能:--externals现在将包括尚未安装的模块(什么modulefinder调用badmodules)。
版本1.2.8中的新功能:用于查找 添加了一个程序包:
pydeps --externals mypackage
它将在屏幕上打印一个json格式的模块名列表,例如:
(dev) go|c:\srv\lib\dk-tasklib> pydeps --externals dktasklib [ "dkfileutils" ]
这意味着dktasklib包只依赖于dkfileutils 包裹。
此功能也可以通过编程实现:
import os from pydeps.pydeps import externals # the directory that contains setup.py (one level up from actual package): os.chdir('package-directory') print externals('mypackage')
版本1.2.5中的新功能:默认值现在是合理的,这样:
pydeps mypackage
会做你想做的事。它和 pydeps --show--max-bacon=2 mypackage这意味着显示 浏览器中的依赖关系图,但将其限制为两个跃点(即 仅包括模块导入的模块-不继续 在进口链上)。旧的默认行为可用于 pydeps --noshow--max-bacon=0 mypackage。
要安装:
pip install pydeps
要创建图形,需要安装Graphviz(确保dot 命令就在你的路上)。
注意
要显示生成的.svg文件,默认情况下,pydeps。 调用firefox foo.svg。这可以用 --display PROGRAM选项,其中PROGRAM是 可执行文件,可以显示图形的图像文件。
注意
请在github上报告错误和功能请求 https://github.com/thebjorn/pydeps/issues
这是对自身运行pydeps的结果(pydeps pydeps):
pydeps还包含一个类似erd_s的评分函数(也称培根 数字,从凯文·培根的6度开始 (http://en.wikipedia.org/wiki/Six_Degrees_of_Kevin_Bacon)让 你过滤掉的模块超过了给定的“跳数” 远离你感兴趣的模块。这对发现 模块与世界其他地方的接口。
找到python stdlib的pydeps接口(不太常见 模块)。
pydeps pydeps --show --max-bacon 2 --pylib -x os re types _* enum
--max-bacon 2(默认值)给出最多2个模块 跳跃离开,属于一起的模块有相似的颜色。 将其与--max-bacon=0(无限)的输出进行比较 过滤器:
也可以使用.ini文件在.pydeps文件中设置所有选项 语法(可由ConfigParser解析)。命令行选项替代 当前目录中.pydeps文件中的选项 覆盖用户主目录中的选项 (%USERPROFILE%\.pydeps在windows和^{tt31}上$ 否则)。
pydeps可以用^{tt33}检测并显示周期$ 参数。这将只显示周期,对于大型库 这不是一个特别快的行动。给一个文件夹 以下内容(使用yaml定义目录结构, 例如在测试中):
relimp: - __init__.py - a.py: | from . import b - b.py: | from . import a
pydeps relimp --show-cycles显示:
试图保持中间格式的可读性, 来自pydeps --show-deps ..的输出如下:
... "pydeps.mf27": { "imported_by": [ "__main__", "pydeps.py2depgraph" ], "kind": "imp.PY_SOURCE", "name": "pydeps.mf27", "path": "pydeps\\mf27.py" }, "pydeps.py2depgraph": { "imported_by": [ "__main__", "pydeps.pydeps" ], "imports": [ "pydeps.depgraph", "pydeps.mf27" ], "kind": "imp.PY_SOURCE", "name": "pydeps.py2depgraph", "path": "pydeps\\py2depgraph.py" }, ...
用法:
usage: pydeps [-h] [--debug] [--config FILE] [--no-config] [--version] [-L LOG] [-v] [-o file] [-T FORMAT] [--display PROGRAM] [--noshow] [--show-deps] [--show-raw-deps] [--show-dot] [--nodot] [--no-output] [--show-cycles] [--debug-mf INT] [--noise-level INT] [--max-bacon INT] [--pylib] [--pylib-all] [--include-missing] [-x PATTERN [PATTERN ...]] [-xx MODULE [MODULE ...]] [--externals] [--reverse] fname
- 位置参数:
- fname文件名
- 可选参数:
-h, --help show this help message and exit --config FILE specify config file --no-config disable processing of config files --version print pydeps version -L LOG, --log LOG set log-level to one of CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET. -v, --verbose be more verbose (-vv, -vvv for more verbosity) -o file write output to ‘file’ -T FORMAT output format (svg|png) --display PROGRAM program to use to display the graph (png or svg file depending on the T parameter) --noshow don’t call external program to display graph --show-deps show output of dependency analysis --show-raw-deps show output of dependency analysis before removing skips --show-dot show output of dot conversion --nodot skip dot conversion --no-output don’t create .svg/.png file, implies –no-show (-t/-o will be ignored) --show-cycles show only import cycles --debug turn on all the show and verbose options --noise-level INT exclude sources or sinks with degree greater than noise-level --max-bacon INT exclude nodes that are more than n hops away (default=2, 0 -> infinite) --pylib include python std lib modules --pylib-all include python all std lib modules (incl. C modules) --x PATTERN, --exclude PATTERN input files to skip (e.g. foo.*), multiple patterns can be provided --xx MODULE, --exclude-exact MODULE same as –exclude, except requires the full match. -xx foo.bar will exclude foo.bar, but not foo.bar.blob --externals create list of direct external dependencies --reverse draw arrows to (instead of from) imported modules
当然可以从python导入pydeps。(看看 tests/test_relative_imports.py文件作为示例。
贡献
- 叉开它
- 创建您的功能分支(git checkout-b我的新功能)
- 提交更改(git commit-am'add some feature')
- 推到分支(git push origin我的新功能)
- 创建新的拉取请求