在 python3 中绝对导入,但找不到我的包裹
Absolute import in python3 but it cant find my package
所以我有这个目录结构:
/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
所以我有这个目录结构:
/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