You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm项目中通过main.py启动应用触发ModuleNotFoundError的问题求助

PyCharm项目中通过main.py启动应用触发ModuleNotFoundError的问题求助

看起来你遇到了一个很常见的Python模块导入路径问题,我来帮你梳理下原因和解决办法:

问题根源

直接运行__init__.py时,Python会自动把这个文件所在的folder目录加入到模块搜索路径(sys.path)里,所以__init__.py里导入的内部模块能被正常找到。但当你从外部的main.py导入folder包时,Python的搜索路径是main.py所在的目录,这时候__init__.py里如果用了非包路径的导入方式(比如直接写import functions而不是from .functions import xxx),Python就会在main.py所在目录找对应的模块,自然找不到,就抛出ModuleNotFoundError了。

具体解决办法

1. 修正__init__.py里的导入语句

把__init__.py中针对内部模块的导入改成相对导入或者基于包的绝对导入:

  • 如果导入的是folder目录下的同级模块(比如functions.py),用相对导入:
    # __init__.py里的导入改成这样
    from .functions import 你的函数名
    
  • 或者用基于包名的绝对导入(更适合部署场景):
    from folder.functions import 你的函数名
    

2. 确保PyCharm运行配置正确

在PyCharm中运行main.py时,检查运行配置的工作目录是否正确:

  • 点击顶部菜单栏的「Run」→「Edit Configurations」
  • 选中main.py的运行配置,查看「Working directory」是否设置为项目根目录(也就是main.py和folder所在的目录)
  • 如果不对,点击右侧的文件夹图标选择正确的目录,保存后重新运行

3. 优化main.py的路径配置(可选,针对部署场景)

如果部署环境中还是出现路径问题,可以在main.py开头手动添加项目路径到搜索列表,确保Python能正确找到folder包:

import sys
from pathlib import Path

# 获取main.py所在的项目根目录
project_root = Path(__file__).parent
# 将根目录加入模块搜索路径
sys.path.append(str(project_root))

from folder import app

# 部署时的启动逻辑
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

4. 部署时的推荐启动方式

如果用Gunicorn、uWSGI这类部署工具,直接用main.py作为入口即可,比如Gunicorn的启动命令可以写:

gunicorn main:app

工具会自动识别模块路径,只要你的项目结构和导入方式正确,就能正常启动。

备注:内容来源于stack exchange,提问作者Jim Macaulay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:08:10