想象一下这个目录结构:
app/
__init__.py
sub1/
__init__.py
mod1.py
sub2/
__init__.py
mod2.py
Run Code Online (Sandbox Code Playgroud)
我正在编码mod1,我需要从中导入一些东西mod2.我该怎么办?
我尝试了from ..sub2 import mod2但是我得到了"尝试非包装中的相对导入".
我google了一下,但发现只有" sys.path操纵"黑客.有没有干净的方式?
编辑:我__init__.py的所有人目前都是空的
EDIT2:我想这样做,因为SUB2包含了为子包(共享类sub1,subX等等).
Edit3:我正在寻找的行为与PEP 366中描述的相同(感谢John B)
我们正在重构我们的代码库。
老的:
from a.b import foo_method
Run Code Online (Sandbox Code Playgroud)
新的:
from b.d import bar_method
Run Code Online (Sandbox Code Playgroud)
两种方法 (foo_method()和bar_method()) 是相同的。它只是更改了名称和包。
由于上面的示例只是导入方法的多种方式的一个示例,因此我认为简单的正则表达式在这里没有帮助。
如何使用命令行工具重构模块的导入?
很多源代码行需要更改,因此 IDE 在这里没有帮助。