我的文件夹结构如下图

mypackage/
    __init__.py
    package1/
        __init__.py
        module1.py        # has ClassOne 
        module2.py        # has ClassTwo
        script.py
    package2/
        __init__.py
        module3.py        # has ClassThree
        module4.py        # has ClassFour

script.py我要访问从module4 ClassFour所以我用相对import象下面

from ..module4 import ClassFour

c = ClassFour()

但我得到的连接错误

ValueError: attempted relative import beyond top-level package

我知道我可以使用此解决

import sys

sys.path.append("path/to/my/module/")

但我感兴趣的相对import解决。

我提到一些问题,并试图像解决方案 - 如何做到相对import

也尝试过使用运行我的文件

python -m script

但没有成功

分析解答

为了你可以做package内运行脚本:

python -m mypackage.package1.script

如果你没有安装package(例如,通过PIP),那么你需要从mypackage的(否则任何目录会做)的父目录调用该命令。

对于这个,但是你还需要纠正你使用的是import。目前..module4不指向现有module。相反,它应该是

from ..package2.module4 import ClassFour

或者,如果你在package2/__init__.pyimportClassFour那么你也可以这样做:

from ..package2 import ClassFour