ImportError:尝试在没有已知父包的情况下进行相对导入(Python 3)
Posted
技术标签:
【中文标题】ImportError:尝试在没有已知父包的情况下进行相对导入(Python 3)【英文标题】:ImportError: attempted relative import with no known parent package (Python 3) 【发布时间】:2021-10-31 15:58:16 【问题描述】:这是一个已经被多次提出的问题,相信我,我已经花费了大量时间来研究大量接受和推荐的解决方案,以及 OP 面临这一挑战的场景。
我也为此投入了一些阅读python documentation 的内容,但此时我感到非常迷茫。这是我正在做的事情:
这是我的目录结构:
├── api
│ ├── db_setup
│ │ ├── db_connect.py
│ │ ├── __init__.py
│ │ └── model.py
│ ├── __init__.py
│ └── routes
│ ├── __init__.py
│ └── routes.py
我只需要将db_connect.py
导入 routes.py
如您所见,包括父目录在内的所有目录中都有__init__.py
文件(大多数答案中建议)。
这就是我尝试在routes.py
文件中导入的方式:
from flask import Flask
from ..db_setup import db_connect
app = Flask(__name__)
db = db_connect.start_database()
if __name__ == '__main__':
app.debug = True
app.run(host='localhost', port=8000)
这是我一夜之间一直在努力的错误
ImportError: attempted relative import with no known parent package
请注意,我所有的 __init__.py
文件都是空白。
感谢您对我到底做错了什么提供帮助和指导。 谢谢。
【问题讨论】:
【参考方案1】:我在相对进口方面也遇到了很多麻烦。仅当在 routes 文件夹内执行 routes.py 时,以下内容才适用于我。如果你不能这样做,也许你必须将你当前的工作目录更改为带有os.chwd("PATH")
或类似名称的路由文件夹:
import sys
sys.path.append("..")
from db_setup import db_connect
db_connect.some_function()
【讨论】:
【参考方案2】:我想你的意思是:
import sys
sys.path.append(os.path.abspath('../db_setup'))
import db_connect
【讨论】:
您好@U12-Forward 感谢您的回答。在我上面的结构中,db_setup
是文件夹的名称,db_connect
是我需要的文件。
我试过了,这是我现在得到的:File ".../api/routes/routes.py", line 2, in module> from db_setup import db_connect ModuleNotFoundError: No module named 'db_setup'
在哪里进行编辑?我已将您建议的代码添加到 routes.py 中,但仍然出现相同的错误。这是我的文件的链接:link
@Anthony 将 from db_setup import db_connect
更改为简单的 import db_connect
@ U12-Forward 它似乎也不起作用。 Take a look:以上是关于ImportError:尝试在没有已知父包的情况下进行相对导入(Python 3)的主要内容,如果未能解决你的问题,请参考以下文章
Python错误-ImportError:尝试使用没有已知父包的相对导入[重复]
Django,将模型类导入新文件。导入错误尝试在没有已知父项的情况下进行相对导入
R语言使用pwr包的pwr.2p.test函数(两个分组样本相同)对两个比例对比分析进行效用分析(power analysis)在已知效应量显著性水平效用值的情况下计算需要的样本量