attempted relative import with no known parent package
from .config import Config ImportError: attempted relative import with no known parent package
C:\Users\lenovo\anaconda3\python.exe "C:/Program Files/JetBrains/PyCharm Community Edition 2023.2.1/plugins/python-ce/helpers/pydev/pydevd.py" --multiprocess --qt-support=auto --client 127.0.0.1 --port 54130 --file D:\ainews\backend\app.py
Connected to pydev debugger (build 232.9559.58)
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2023.2.1\plugins\python-ce\helpers\pydev\pydevd.py", line 1500, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm Community Edition 2023.2.1\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:\ainews\backend\app.py", line 7, in <module>
from .config import Config
ImportError: attempted relative import with no known parent package
现在卡在这里无法正常运行app.py
flask解决方案
因为 是flask所以
python.exe -m flask run
解决方案
方案 1:修改导入方式(推荐)
将 app.py 中的相对导入改为绝对导入:
# 将这行:
from .config import Config
# 改为:
from config import Config
这样可以直接运行 app.py。
方案 2:创建启动脚本
在项目根目录(D:\ainews\)创建一个新的启动文件,例如 run.py:
# D:\ainews\run.py
from backend.app import app
if __name__ == '__main__':
app.run(debug=True)
然后运行 run.py 而不是 app.py。
方案 3:使用模块方式运行 可以调试 但是有可能/ 接口无法访问
在 PyCharm 中配置运行方式:
- 打开 Run → Edit Configurations
- 找到你的运行配置
- 不要直接运行
app.py,而是:- 在 Script path 改为 Module name
- 输入模块名:
backend.app - Working directory 设置为项目根目录:
D:\ainews
或者在命令行中使用:
cd D:\ainews
python -m backend.app
方案 4:修改项目结构
确保你的项目结构正确:
D:\ainews\
├── backend\
│ ├── __init__.py # 确保这个文件存在
│ ├── app.py
│ └── config.py
└── run.py # 新建的启动文件
确保 backend\__init__.py 文件存在(可以是空文件)。
推荐做法
我建议使用方案 1 + 方案 2 的组合:
- 如果
config.py和app.py在同一个目录,使用绝对导入 - 创建一个单独的启动脚本在项目根目录