我的文件夹结构如下图
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__.py
importClassFour
那么你也可以这样做:
from ..package2 import ClassFour