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

Python跨文件夹导入遇ModuleNotFoundError问题求助

解决跨文件夹Python模块导入的ModuleNotFoundError问题

问题背景

目录结构如下:

Directory/
├─ Folder1/
│  └─ File1.py(包含class Something)
└─ Folder2/
   └─ File2.py

尝试用from Folder1.File1 import Something导入时,编辑器能正常识别类和方法,但运行File2.py时抛出ModuleNotFoundError,仅同文件夹下的导入能正常工作。

可行解决方法

1. 临时添加项目根目录到Python路径

在File2.py开头添加代码,把Directory的绝对路径加入sys.path:

import sys
# 替换成你实际的Directory绝对路径
sys.path.append("/Users/xxx/Projects/Directory")

from Folder1.File1 import Something

这种方式简单直接,适合临时测试或小型项目。

2. 设置PYTHONPATH环境变量

把Directory的路径添加到PYTHONPATH环境变量中,让Python全局识别这个目录:

  • Windows命令行:
    set PYTHONPATH=C:\path\to\Directory
    
  • Linux/macOS终端:
    export PYTHONPATH=/path/to/Directory
    

设置后,直接运行File2.py就能正常导入,无需修改代码。

3. 把项目转为可导入的包(推荐长期项目)

在Directory、Folder1、Folder2下各创建一个空的__init__.py文件,让目录结构变成:

Directory/
├─ __init__.py
├─ Folder1/
│  ├─ __init__.py
│  └─ File1.py
└─ Folder2/
   ├─ __init__.py
   └─ File2.py

之后可以两种方式运行:

  • 切换到Directory的上级目录,用模块方式运行File2:
    python -m Directory.Folder2.File2
    
  • 或者用开发模式安装这个包:
    cd Directory
    pip install -e .
    

安装后,任何地方都能直接用from Folder1.File1 import Something导入。

4. 从项目根目录启动脚本

不要直接双击或在Folder2目录下运行File2.py,而是切换到Directory目录,执行:

python Folder2/File2.py

此时Python会把Directory当作当前工作目录,就能正确识别Folder1模块。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:17:47