静态分析python导入守护程序。
python-import-guardian的Python项目详细描述
python import guardian自述文件
这是什么?
python-import-guardian
是python的静态分析导入守护程序。它
可用于明确控制哪些python模块和包可以
由项目中给定的一组模块和包导入。
什么时候有用?
假设您有一个包含两个主要组件的项目—客户机和服务器。 这两个组件都位于同一个存储库中(为了便于讨论) 它们都为各种功能使用一组通用的共享代码,例如 确定如何计算某些哈希值或某些哈希值。
代码可以这样排列:
/myproject
|
|- client/
|- server/
|- shared/
从概念上讲,您只希望client
和shared
代码安装在
客户端机器和服务器机器上的server
和shared
代码。模块
client
和server
可以从shared
导入,但不能从彼此导入,并且
shared
两者都可以导入-这确保了您有一个良好的分离
在维护一些共享代码的同时关注客户机和服务器代码之间的关系
以及良好的干燥原则。
python-import-guardian
允许您定义希望这些模块如何
当涉及到哪个模块可以从何处导入什么时,相互关联。
对于我们的示例项目,在
项目树可能如下所示:
{
"forbidden_modules": {
"server": [
"client",
"shared"
],
"client": [
"server",
"shared"
]
}
}
这里的forbidden_modules
声明将python模块映射到
不能导入的模块或包。所以在这种情况下:server
可以
不能由client
或shared
导入,并且client
不能由
server
或shared
。forbidden_modules
是黑名单,因此shared
可以
被任何东西导入,因为它没有被提及为禁止的模块。