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

PyCharm可运行但命令行报ModuleNotFoundError(Poetry项目)

解决ModuleNotFoundError: No module named 'src'的问题

问题根源

你直接用python3 src/scripts/s.py执行脚本时,Python会把脚本所在的src/scripts目录加到模块搜索路径sys.path里,而不是项目根目录。这就导致Python找不到src这个顶层模块——毕竟src在项目根目录下,不在当前的搜索路径里。而PyCharm会自动把项目根目录加入sys.path,所以能正常运行。

下面是几种可行的解决方法:

  • 方法1:用Poetry的run命令执行(最简单)
    Poetry会自动处理环境和模块路径,直接在项目根目录执行:

    poetry run python src/scripts/s.py
    
  • 方法2:改用相对导入+模块方式运行
    把s.py里的绝对导入改成相对导入(因为s.py和helper同属src下的子目录):

    # s.py 中的导入语句修改为
    from ..helper.h import add
    

    然后用模块方式运行脚本(这样Python会把项目根目录加入搜索路径):

    python3 -m src.scripts.s
    
  • 方法3:手动添加项目根目录到搜索路径(应急用)
    在s.py的最顶部加一段代码,手动把项目根目录加入sys.path:

    import sys
    from pathlib import Path
    
    # 获取项目根目录(当前脚本在src/scripts,根目录是它的上两级目录)
    project_root = Path(__file__).parent.parent.parent
    sys.path.append(str(project_root))
    
    # 再执行原来的导入
    from src.helper.h import add
    
  • 方法4:配置Poetry可执行命令(长期项目推荐)
    先给s.py加一个入口函数main():

    # s.py
    from src.helper.h import add
    
    def main():
        print(add(1, 2))
    
    if __name__ == "__main__":
        main()
    

    然后在pyproject.toml里添加脚本配置:

    [tool.poetry.scripts]
    run-s = "src.scripts.s:main"
    

    执行poetry install后,就能直接用命令运行:

    poetry run run-s
    

内容的提问来源于stack exchange,提问作者techjourneyman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:00:05