python - 在 python3 中绝对导入,但找不到我的包

标签 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.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 路径(而不是你想要的 .)——这会导致你看到错误消息,因为你实际上不是那个深度的包(并且不在任何 sys.path 根上都没有可导入的 pkg)。您还会在 python 2 中看到同样的问题。

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

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

相关文章:

python - 如何在python中打印出两个 "|"之间的子字符串?

python - 用 Python 计算分子化合物中的元素数量(如果可能的话递归)?

python - pytest:测试子包的导入

python - 是否可以在 PyCharm 中使用静态类型断言?

python - 在 Python 中从 IP 地址和掩码长度获取 IP 掩码

python - 独立的 Python Web 服务器和/或 nginx

python - 整数的模运算

python - 如何加载文件夹中的所有模块?

Python 找不到模块

python - 如何在 tensorflow 中恢复 session ?