#python #circular #find #cli #imports #module #toml

app marui

在 Python 项目中查找循环导入

3 个不稳定版本

0.2.0 2023年3月22日
0.1.1 2023年2月24日
0.1.0 2023年2月24日

#2269开发工具

44 每月下载量

MIT 协议

18KB
347 代码行

marui - 在 Python 项目中查找循环导入。

Crate

在工作中,我使用的是一个相对较大的 Python 代码库。有时我会不小心在模块间添加循环依赖。这会导致经典的

ImportError: cannot import name 'A' from partially initialized module 'B'

marui 通过在您运行 CI 套件之前查找循环导入来缓解此问题。

用法

在 Python 项目(由存在 pyproject.toml 的文件来标识)中,只需运行

$ marui .

限制

在其当前版本(0.2.0)中,marui 只能找到项目中使用完全限定路径导入的导入。例如,如果您有一个像这样的项目结构

.
├── pyproject.toml
├── my_package 
│   ├── a
│   │   ├── __init__.py
│   │   └── b.py
│   └── c
│       ├── __init__.py
│       └── d.py
└── ...

b.py 可以将 d.py 导入为

import my_package.c.d 

但不能这样导入

import c.d

这将在下一个版本中解决。

安装

如果您已克隆此仓库,请使用 cargo 构建 marui 并安装

$ gh repo clone jan-krecke/marui
$ cd marui
$ cargo install --path .

或者,直接从 crates.io 获取 marui

$ cargo install marui

反馈和贡献

如果您想使用这个工具并发现任何问题,请随意提交 PR 或 issue :-).

依赖

~3MB
~61K SLoC