python 中的相对路径导入问题
Problems with relative path import in python
我有一个具有此目录结构的项目
我想从 notebook01.ipynb
导入来自 functions.py
的 def。
我遵循了相对路径导入 here and studied the answers in this stack overflow post.
的文档
我尝试写入 from .Modules.functions import fibonacci
,(在 Modules
文件夹前有一个点)我收到以下错误。
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-be5f30231faa> in <module>
----> 1 from .Modules.functions import fibonacci
ModuleNotFoundError: No module named '__main__.Modules'; '__main__' is not a package
然后我尝试在 Modules
文件夹前添加两三个点 from ..Modules.functions import fibonacci
然后我得到了错误
ValueError Traceback (most recent call last)
<ipython-input-3-8d1656059c1f> in <module>
----> 1 from ..Modules.functions import fibonacci
ValueError: attempted relative import beyond top-level package
我已经按照文档的建议在目录结构的每个级别添加了 __init__.py
文件]2 如您所见,但一点运气都没有!
我做错了什么?
老实说:相对导入可能是地狱。这就是 Python 3 默认执行绝对导入的原因 (https://docs.python.org/2.5/whatsnew/pep-328.html)。
如果你使用 Python 3 - 使你所有的包都是绝对的。
如果您仍然使用 Python 2,您可以通过在顶部添加以下行来切换默认行为:
from __future__ import absolute_import
我有一个具有此目录结构的项目
我想从 notebook01.ipynb
导入来自 functions.py
的 def。
我遵循了相对路径导入 here and studied the answers in this stack overflow post.
我尝试写入 from .Modules.functions import fibonacci
,(在 Modules
文件夹前有一个点)我收到以下错误。
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-be5f30231faa> in <module>
----> 1 from .Modules.functions import fibonacci
ModuleNotFoundError: No module named '__main__.Modules'; '__main__' is not a package
然后我尝试在 Modules
文件夹前添加两三个点 from ..Modules.functions import fibonacci
然后我得到了错误
ValueError Traceback (most recent call last)
<ipython-input-3-8d1656059c1f> in <module>
----> 1 from ..Modules.functions import fibonacci
ValueError: attempted relative import beyond top-level package
我已经按照文档的建议在目录结构的每个级别添加了 __init__.py
文件]2 如您所见,但一点运气都没有!
我做错了什么?
老实说:相对导入可能是地狱。这就是 Python 3 默认执行绝对导入的原因 (https://docs.python.org/2.5/whatsnew/pep-328.html)。
如果你使用 Python 3 - 使你所有的包都是绝对的。
如果您仍然使用 Python 2,您可以通过在顶部添加以下行来切换默认行为:
from __future__ import absolute_import