我有两个repos打算在包corp
中定义东西,这是我们公司代码使用的命名空间。 python3.5:
<repoA>/corp/foo/bar
<repoB>/corp/foo/zing/zam
问题在于A中存在<repoA>/corp/__init__.py
在包级别定义一些代码。
这可以标记'关闭'corp
包关于导入分辨率(根据我对&gt; = python3.3中的设计的理解,这似乎是正确的)。因此代码不能import corp.foo.zing
,因为它不会像<repoB>/corp
中那样处理corp
中的任何内容(repoA
位于repoB
中的PYTHONPATH
之前)。
<repoA>
是一个长期的中央回购,具有公司安全,dbo等功能 - 因为(原因)它非常'遗留',我们无法直接添加我们的代码。所以我们有自己的回购B,<repoA>
和<repoB>
在使用B的系统上PYTHONPATH
。
有没有办法对事物进行编码,以便客户端代码可以保持相同
import corp ; print(corp.some_package_var)
但<repoB>/corp/foo/zing
中的代码仍然可以通过正常的import corp.foo.zing
来解决? (如果客户端代码没有任何区别,我 AM 能够更改repoA
。如果客户端代码需要更改,它就不是完全不可能的了,但它变得非常如果没有强大的释放过程,广泛的内部使用会很困难