我正在开发一个相对较大的Django项目。我们正在将项目分成几个(不可重复使用的)应用程序。作为CI的一部分,我想有一种方法可以强制执行不会引入违反应用程序体系结构的依赖项。特别是,我想确保应用程序之间的依赖关系只朝一个方向发展。例如:
workspace/
project/
main_app/
addon_app1/
addon_app2/
project
可以从任何地方导入。project
以外的任何内容都不允许从project
导入。main_app
不允许从任何地方导入(stdlib和第三方软件包除外)。addon_app1
可以导入表单main_app
,但不能导出addon_app2
。addon_app2
可以从main_app
和addon_app1
导入。是否有可用于此的现有工具?我找到了z3c.dependencychecker
和snakefood
,但它们不兼容Python 3。理想情况下,我希望有一些东西
但我自己做一些工作很好,如果必须的话(例如将一些代码移植到Python 3),所以即使它们不满足所有三个要求,也请提出解决方案。