所以我有这个目录结构:

/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

有人知道吗?

最佳答案

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

您可能正在运行 python pkg/dir1/dir2/script2.py,它将 pkg/dir1/dir2 放在 python 路径上(而不是您想要的 .)——这会导致您看到错误消息,因为您实际上不是那个深度的包(并且不要在任何 pkg 根上都可以导入 sys.path)。您还会在 python 2 中看到同样的问题。

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

关于python - python3中的绝对导入但找不到我的包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44232739/

10-12 16:37
查看更多