问题 ValueError:尝试非包中的相对导入而不是测试包


我知道这已被多次询问,但不知怎的,我无法克服这个错误。这是我的目录结构 -

project/
  pkg/
  __init__.py
  subpackage1/
        script1.py
        __init__.py
  subpackage2/
        script2.py
       __init__.py

script2.py有:

class myclass:
    def myfunction:

script1.py有

 from ..subpackage2 import script2   

我也试过了

from ..subpackage2 import myclass

这给了我:ValueError:在非包中尝试相对导入

任何帮助将非常感激。


10938
2018-05-12 17:25


起源

可能重复 如何在Python中进行相对导入? - ganchito55


答案:


这个答案解释了发生了什么: https://stackoverflow.com/a/73149/769971

您可能正在从subpackage1 /目录中运行script1.py。 将导入更改为 from subpackage2 import script2,备份到pkg /目录,然后运行 python -m subpackage1.script1


16
2018-05-12 17:35



这对我有用。我认为我的错误是试图运行python脚本 python ./subpackage1/script1.py 代替 python -m subpackage1.script1,这是完全错误的! - penny chan