python3.3+如何定义packagevariables(\ uu init\ uuuuuuuuuu.py),而不通过\ uu init\ uuuuuuuuuuuuuu.py声明包“closed”

2024-04-20 07:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个repo打算在包corp中定义东西,这个名称空间用于我们公司的代码。Python3.5:

  • <repoA>/corp/foo/bar
  • <repoB>/corp/foo/zing/zam

问题是在包级别存在定义一些代码的<repoA>/corp/__init__.py。你知道吗

这似乎标志着corp包在导入分辨率方面是“关闭的”(根据我对>;=python3.3中设计的理解,这似乎是正确的)。因此,代码不能import corp.foo.zing,因为它不会将<repoB>/corp中的任何内容视为包corprepoAPYTHONPATH中的repoB之前)。你知道吗

<repoA>是一种长期存在的中央回购,具有诸如公司安全性、dbo之类的功能——因为(原因)它是相当“遗留”的,我们不能直接向它添加代码。所以我们有自己的repo B,<repoA><repoB>都在使用B的系统上

有没有一种方法来编写代码,使客户机代码保持一致

  • 调用例如import corp ; print(corp.some_package_var)

但是<repoB>/corp/foo/zing中的代码仍然可以通过正常的import corp.foo.zing解析?(IAM能够更改repoA如果客户端代码看不到任何差异。客户机代码是否需要更改并不是完全不可能的,但是如果没有可靠的发布过程,考虑到广泛的内部使用,这将变得非常困难)


Tags: 代码import名称客户机定义foobar空间