3
考虑下面的例子包:相对导入失败
example/
├── bar.py
├── foo.py
└── __init__.py
foo.py
只包含一个行代码:from . import bar
。
如果我从example
包根内执行python foo.py
,我得到:
SystemError: Parent module '' not loaded, cannot perform relative import
我在做什么错?
谢谢!它似乎工作,你能解释一下你的评论:“它不应该在顶层运行任何代码,通常”?你指的是'foo.py',你的意思是'foo.py'模块在刚导入时不应该运行任何代码? –
@DunPeal:是的,确切地说。 – Ryan
更具体地说:当你运行一个文件为'python a/b/c.py'时,python将'a/b /'加入'sys.path'。不要运行任何应该作为模块层次结构的一部分的文件名。总是坐在父目录下并用'-m'运行它。 (如果你真的想这么做,你可以在这里使用'-m example.foo'。) – Eevee