大概目录树如下:
.
├── entry1.py
├── other_files.py
└── sub
├── entry2.py
└── pkg
├── __init__.py
├── mdl_1.py
└── mdl_2.py
sub 是从一个子项目拷贝过来的( git submodule ),主项目要把它整合起来。
而在 entry2.py 中有引用
from pkg.mdl_1 import some_class
会提示 unresoleved reference ,原因很明显,有两种方法可以解决
1 、改成相对引用
from .pkg.mdl_1 import some_class
2 、改成完整引用
from sub.pkg.mdl_1 import some_class
但是问题就来了,由于 sub 是子项目,在某些时候要求 sub 可以独立运行( entry2.py ),而在这时以上两种方法均不能使 sub 正确 import 。
在 so 查到相关问题: http://stackoverflow.com/questions/16981921/relative-imports-in-python-3
有点区别。历史原因居然是 Guido 的一己之见而搞得这么复杂……
[所以现在需要一个能够同时兼容主项目和子项目独立运行的简单的 import 方式。]
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.