检查导入的包是否在setup.py中声明
项目描述
此软件包提供了一个dependencychecker脚本,用于检查egg是否在它的setup.py中声明了所有导入的包。
用法
dependencychecker [-h] [-v] [-z] package Checks whether imported packages are declared in setup.py. positional arguments: package setuptools `requirement string`_, e.g. ws.dependencychecker or ws.dependencychecker[test] optional arguments: -h, --help show this help message and exit -v, --verbose Print all lines importing missing packages -z, --zcml Scan ZCML files -m , --mapping Filename with additional egg-->packages mappings
支持的Python版本:2.6, 2.7(3.x不受支持,因为一些依赖尚未移植,例如zope.component)。
虽然dependencychecker没有导入任何文件,但它需要包及其依赖项位于PYTHONPATH上,以便通过pkg_resources.working_set访问。
默认情况下,dependencychecker会打印一个未声明包名的列表,格式化后可以直接复制粘贴到您的setup.py的install_requires列表中,如下所示
$ depcheck ws.dependencychecker 'gocept.testing.mock',
如果您想获取更多信息,请使用详细模式(传递-v)
$ depcheck ws.dependencychecker -v /home/wosc/depcheck/src/ws/dependencychecker/tests/test_check.py:4:import gocept.testing.mock
要在buildout中使用ws.dependencychecker,可以使用如下示例片段
[depcheck] recipe = zc.recipe.egg eggs = ${test:eggs} ws.dependencychecker
包含多个包的egg
对于大多数egg,egg名称和提供的包名称相同(例如,依赖于zope.interface egg将允许您导入zope.interface,但不能导入其他内容)。然而,某些egg包含多个包,以及/或具有不同名称的包(例如,ZODB3 egg包含包ZODB、BTrees和persistent)。
ws.dependencychecker内置了一些启发式方法(例如ZODB、setuptools)来处理这种情况,但当这些方法不足以满足您的项目需求时,您可以传递一个如下格式的映射文件
[egg_name] package1 package2
例如,在ZODB示例(实际上是内置的)中,它看起来是这样的
[ZODB3] ZODB BTrees persistent
无需重复鸡蛋名称本身,因此对于 setuptools(它还包含 pkg_resources),看起来是这样的
[setuptools] pkg_resources
已知限制
目前只识别 Python 2.7 的标准库模块。
对于包含多个或不同名称包的鸡蛋的内置映射相当有限。欢迎提出建议!
不识别单行导入的多个包(import foo, bar 只会拾取 foo),但此拼写方式受到 PEP 8 的反对。
错误地识别 ZCML 中的多行注释中的包含项。
不支持扫描压缩鸡蛋。
开发
源代码可在 http://code.wosc.de/hg/public/ws.dependencychecker 的 mercurial 仓库中找到。
请将您发现的任何错误报告给 Wolfgang Schnerring。
变更日志
1.1.1 (2011-12-15)
已与 Python-2.6 兼容
1.1 (2011-12-09)
将包名合并到鸡蛋名中(例如 zope.traversing.foo –> zope.traversing)
允许指定额外的鸡蛋–>包映射。
支持扫描 ZCML 文件。
将默认输出更改为分组模式,便于复制粘贴;添加详细模式。
1.0 (2011-12-06)
首次发布。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。