我正在开发一个包含以下根文件夹的python应用程序:
+---FrontEnd
+---BackEnd
+---Common
来自Common但Common的FrontEnd和BackEnd导入不应从前者导入。我想以编程方式强制执行此规则,以便我的团队(尤其是新团队成员)不会意外地将FrontEnd或BackEnd导入Common。
我听说导入钩子可以帮到这里,但我没有找到太多关于此的信息。我的第一次尝试也不是那么顺利:
Common.__init__.py
class NoForeignDependencies(object):
PATH_TRIGGERS = ['FrontEnd', 'BackEnd']
def __init__(self, path_entry):
if path_entry not in self.PATH_TRIGGERS:
raise ImportError()
def find_module(self, fullname, path=None):
print 'Import not allowed for this module'
return None
sys.path_hooks.append(NoForeignDependencies)
关于如何实现这一目标的任何想法?
答案 0 :(得分:0)
如何将这三个包装成单独的包,然后使用Jenkins自动运行每个包的单元测试,例如,只有少数人可以访问Jenkins?这样,如果有人去并在Common中添加了FrontEnd的导入,则Jenkins上的Common测试会失败,因为在Jenkins用于运行Common测试的Common环境中没有安装FrontEnd。