从父目录导入 Python 相对

马里翁

在过去的几天里,我阅读了许多关于 Python 相关导入的文档,但遇到了以下文件夹结构的问题:

parent_folder
       ├── subfolder1
       │        └── __init__.py
       │        └── file_1.py
       ├── subfolder2
       │        └── __init__.py
       │        └── file_2.py
       │
       └ __init__.py (parent folder has an init in it)

file_2.py我想访问file_1.py. 我试过添加以下内容,file_2.py但似乎都不起作用:

1. from ..subfolder1 import file_1    #ImportError: attempted relative import with no known parent package

2. import parent_folder.subfolder1.file_1    #ModuleNotFoundError: No module named 'parent_folder'

3. from parent_folder.subfolder1 import file_1    #ModuleNotFoundError: No module named 'parent_folder'

我现在真的很迷茫,似乎无法理解为什么会发生这种情况。我现在可能已经阅读了 10 篇关于相对进口的不同指南,但仍然不明白为什么。

请注意,如果我放入file_2.pyinside parent_folder,然后添加import subfolder1.file1它可以很好地导入,但是我无法file_2.py从它的位置移动或使用sys.path.append()

有没有比我有更多模块经验的人有任何见解?谢谢!

Mr_and_Mrs_D

建议弄乱 sys 路径的答案是错误的 - 不幸的是,这个建议在网络上漂浮,导致无限的挫败感和崩溃(好)到细微的错误(坏)。

正确的答案是使用-m最顶层包的父文件夹中的开关运行脚本因此,如果这parent_folder是一个看起来像的包,并且您想运行 file_1.py,则应该

$ python -m parent_folder.subfolder1.file_1

三个进口中的任何一个都可以工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章