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

aaj*_*aaj 12 python

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

project/
  pkg/
  __init__.py
  subpackage1/
        script1.py
        __init__.py
  subpackage2/
        script2.py
       __init__.py
Run Code Online (Sandbox Code Playgroud)

script2.py有:

class myclass:
    def myfunction:
Run Code Online (Sandbox Code Playgroud)

script1.py有

 from ..subpackage2 import script2   
Run Code Online (Sandbox Code Playgroud)

我也试过了

from ..subpackage2 import myclass
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将非常感激.

who*_*ski 18

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

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

  • 这对我有用.我想我的错误是试图用`python./ subpackage1/script1.py`而不是`python -m subpackage1.script1`运行python脚本,这是完全错误的! (3认同)