跳转到主要内容

查找python模块导入

项目描述

import_deps

PyPI version Python versions CI Github actions

查找python模块的导入依赖。

import_deps基于标准库中的ast模块,因此正在分析的模块不会被执行。

安装

pip install import_deps

用法

import_deps旨在跟踪已知包和模块内的导入。

给定一个包含以下模块的包

  • foo/__init__.py
  • foo/foo_a.py
  • foo/foo_b.py
  • foo/foo_c.py

其中foo_a.py具有以下导入

from . import foo_b
from .foo_c import obj_c

用法(命令行界面)

> import_deps foo/foo_a.py
foo.foo_b
foo.foo_c

用法(库)

import pathlib
from import_deps import ModuleSet

# First initialise a ModuleSet instance with a list str of modules to track
pkg_paths = pathlib.Path('foo').glob('**/*.py')
module_set = ModuleSet([str(p) for p in pkg_paths])

# then you can get the set of imports
for imported in module_set.mod_imports('foo.foo_a'):
    print(imported)

# foo.foo_c
# foo.foo_b

ModuleSet

您可以通过路径或模块的全限定名来获取ModuleSet中所有模块的列表。

by_path

请注意,by_path的关键字必须与在ModuleSet初始化时提供的一模一样。

for mod in sorted(module_set.by_path.keys()):
    print(mod)

# results in:
# foo/__init__.py
# foo/foo_a.py
# foo/foo_b.py
# foo/foo_c.py

by_name

for mod in sorted(module_set.by_name.keys()):
    print(mod)

# results in:
# foo.__init__
# foo.foo_a
# foo.foo_b
# foo.foo_c

ast_imports(file_path)

ast_imports是一个低级函数,返回模块中导入语句条目的列表。参数file_path可以是字符串或pathlib.Path实例。

返回值是包含以下值的4元组项的列表

  • 模块名称(来自“from”语句,如果是普通的import则为None
  • 对象名称
  • as名称
  • 相对导入级别(父级数量,如果是普通的import则为None
from import_deps import ast_imports

ast_imports('foo.py')
# import datetime
(None, 'datetime', None, None)

# from datetime import time
('datetime', 'time', None, 0)

# from datetime import datetime as dt
('datetime', 'datetime', 'dt', 0)

# from .. import bar
(None, 'bar', None, 2)

# from .acme import baz
('acme', 'baz', None, 1)


# note that a single statement will contain one entry per imported "name"
# from datetime import time, timedelta
('datetime', 'time', None, 0)
('datetime', 'timedelta', None, 0)

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

import_deps-0.3.0.tar.gz (6.6 kB 查看哈希值)

上传时间 源代码

构建分布

import_deps-0.3.0-py3-none-any.whl (7.6 kB 查看哈希值)

上传时间 Python 3

支持