Python跨目录导入modules模块遇ModuleNotFoundError,如何解决?
问题分析
你遇到的ModuleNotFoundError是因为Python的模块搜索路径未包含project根目录。当执行src/main.py时,Python默认仅将src/目录加入搜索路径,而modules/位于project/下,不在搜索范围内,因此无法被识别。
解决方案
以下是几种实用的解决方法:
方法1:手动添加项目根目录到Python路径
在main.py最顶部添加代码,将project目录手动加入模块搜索路径:
import sys from pathlib import Path # 获取project目录的绝对路径(src的父级目录) project_root = Path(__file__).parent.parent sys.path.append(str(project_root)) from modules.futures import my_function print(my_function())
这种方法无需修改系统环境变量,适合临时调试。
方法2:配置VS Code运行环境
通过修改VS Code的launch.json,让Python自动识别项目根目录:
- 打开左侧「运行和调试」面板,创建
launch.json文件(选择Python环境)。 - 在配置中添加
env字段,将项目根目录加入PYTHONPATH:
{ "version": "0.2.0", "configurations": [ { "name": "Python: main.py", "type": "python", "request": "launch", "program": "${file}", "env": { "PYTHONPATH": "${workspaceFolder}" }, "console": "integratedTerminal" } ] }
之后运行main.py时,VS Code会自动将project目录(即${workspaceFolder})加入Python搜索路径。
方法3:设置系统环境变量(永久生效)
若希望终端运行时也能正常导入,可将project目录的绝对路径添加到系统PYTHONPATH:
- Windows:命令行执行
setx PYTHONPATH "你的project目录绝对路径;%PYTHONPATH%" - Linux/macOS:终端执行
export PYTHONPATH="/你的project目录绝对路径:$PYTHONPATH",如需永久生效,可将该命令写入~/.bashrc或~/.zshrc文件。
额外说明
你在modules/__init__.py中写的from futures import *并非必要,只要导入路径正确,即使没有该语句,from modules.futures import my_function也能正常工作。
内容的提问来源于stack exchange,提问作者VCooper
相关产品推荐
相关产品推荐

