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
相关产品推荐
相关产品推荐

