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

Python导入报错求助:ModuleNotFoundError: No module named 'folder1'

问题描述

应用目录结构如下:

/app
    /folder1/file_one.py
    /folder2/file_two.py
    /folder3/file_three.py

PYTHONPATH配置为 ~/app

从file_two.py导入folder1.file_one中的function1一切正常,但在file_three.py中执行相同导入操作时,出现如下报错:

Traceback (most recent call last):
  File "/home/ubuntu18/rex/app/folder3/file_three.py", line 1, in <module>
    from folder1.file_one import function1
ModuleNotFoundError: No module named 'folder1'

已尝试调整PYTHONPATH、切换相对/绝对路径导入、添加__init__.py等方法,问题仍反复出现。

排查与解决步骤
  • 确认PYTHONPATH实际生效路径
    在file_three.py开头添加以下代码,打印当前Python的模块搜索路径:

    import sys
    print(sys.path)
    

    检查输出中是否包含/home/ubuntu18/rex/app——~/app会被解析为当前执行用户的home目录,若你用不同用户(如root)运行脚本,路径会不匹配。若路径缺失,可通过以下方式修复:

    • 临时生效:运行脚本前执行export PYTHONPATH="/home/ubuntu18/rex/app:$PYTHONPATH"
    • 永久生效:将上述命令添加到~/.bashrc(bash环境)或~/.zshrc(zsh环境),执行source ~/.bashrc刷新配置
  • 修正脚本运行方式
    若直接在folder3目录下运行python file_three.py,Python会将当前目录(/home/ubuntu18/rex/app/folder3)加入搜索路径,而非父目录。可通过两种方式解决:

    • 切换到/home/ubuntu18/rex/app目录,以模块方式运行:python -m folder3.file_three
    • 或在file_three.py开头手动添加父目录到搜索路径:
      import sys
      from pathlib import Path
      sys.path.append(str(Path(__file__).parent.parent))
      
  • 验证__init__.py配置
    确保folder1、folder2、folder3目录下都存在空白的__init__.py文件。Python 3.3+支持命名空间包,但显式添加该文件可避免潜在的兼容性问题。

  • 检查文件名/目录名大小写
    Linux系统对大小写敏感,确认代码中引用的folder1与实际目录名完全一致,无拼写错误(如误写为Folder1或folder_1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:55:13