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 中配置运行方式:

  1. 打开 Run → Edit Configurations
  2. 找到你的运行配置
  3. 不要直接运行 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 的组合:

  1. 如果 config.pyapp.py 在同一个目录,使用绝对导入
  2. 创建一个单独的启动脚本在项目根目录