我有这样的设置:
projectpath/__main__.py
projectpath/backend/__init__.py
projectpath/backend/backend1.py
projectpath/backend/backend2.py
__main__.py
导入并使用后端文件和backend2.py
也导入并使用backend1.py
。我曾经这样做过:
__main__.py:
import backend.backend1
import backend.backend2
backend2.py:
import backend1
这有效,但现在我使用mypy(Python静态类型检查器),并且要求所有导入路径都相对于__main__.py
,所以我的backend2.py现在看起来像这样:
import backend.backend1 as backend1
mypy现在说这很好,但是当我尝试执行它时,我收到以下错误:
Traceback (most recent call last):
[...]
File "./backend/backend2.py", line 1, in <module>
import backend.backend1 as backend1
有没有办法允许以该样式导入,因此允许从__main__.py
的执行路径导入?
答案 0 :(得分:0)
我编写了一些示例代码,用于使用python 2.7.9在Linux Debian 8.6上测试这个问题。
我可以通过这种方式在Python 2解释器导入模块上运行projectpath/__main__.py
测试和代码:
from backend import backend2 if __name__ == '__main__': ba2 = backend2.Backend2("ex") print ba2.getb1()
projectpath/backend/backend1.py
class Backend1: def __init__(self, b=0): # type: (int) -> None self.b = b def b1(self): # type: () -> str return 'b1!'
projectpath/backend/backend2.py
from backend1 import Backend1 class Backend2: def __init__(self, b='text'): # type: (str) -> None self.b = b def getb1(self): # type: () -> str x = Backend1() return 'b2:' + x.b1() + ';' if __name__ == '__main__': z = Backend2() print z.getb1()
mypy
您可以在Python 2中找到有关setContentView(R.layout.main);
类型检查的here文档。