绝对导入python3,但找不到我的软件包

绝对导入python3,但找不到我的软件包,python,python-3.x,python-import,Python,Python 3.x,Python Import,所以我有这个目录结构: /pkg /__init__.py /script1.py /dir1 /__init__.py /file.json /dir2 /__init__.py /script2.py 如您所见,我有两个脚本文件,script1.py和script2.py,我试图做的是从script2.py导入script1.py,所以我做到了 import

所以我有这个目录结构:

/pkg
    /__init__.py
    /script1.py
    /dir1
         /__init__.py
         /file.json
         /dir2
              /__init__.py
              /script2.py
如您所见,我有两个脚本文件,script1.py和script2.py,我试图做的是从script2.py导入script1.py,所以我做到了

import pkg.script1
但它告诉我

ModuleNotFoundError: No module named 'pkg'
港口和港口

from ... import script1
但是我得到了这个错误

ValueError: attempted relative import beyond top-level package

有人知道吗?

没有看到你的命令行(重要的缺失信息),这只是猜测。你可以看到一个

您可能正在运行
python pkg/dir1/dir2/script2.py
,它将把
pkg/dir1/dir2
放在python路径上(而不是
),这将导致出现错误消息,因为您实际上不是处于该深度的包(并且在任何
sys.path
根上都没有
pkg
importable)


调用作为模块的脚本时,几乎应该始终使用
-m
方法。在您的情况下,应该使用
python-m pkg.dir1.dir2.script2

这是尝试的相对导入,而不是绝对导入。