Python项目导入报错:ModuleNotFoundError: No module named 'src' 求解
解决Python模块导入错误:No module named 'src'
问题原因
你在项目根目录执行python3 src/train.py时,Python仅将当前工作目录(root_dir)加入模块搜索路径,但cycle_gan.py里的from src.cyclegan.utils import *试图以src作为顶层模块导入,而此时src并非Python识别的顶层模块,导致导入失败。
解决方案
方案1:使用相对导入(推荐,符合项目结构规范)
修改cyclegan/models/cycle_gan.py中的导入语句为相对路径:
from ..utils import *
..代表当前文件所在目录的上一级(即cyclegan目录),这样就能直接导入同目录下的utils.py。
修改后,在根目录执行原命令即可正常运行:
python3 src/train.py
方案2:将项目根目录加入Python搜索路径
方式A:通过环境变量设置
在项目根目录执行以下命令:
export PYTHONPATH=$PWD python3 src/train.py
PYTHONPATH会告诉Python将根目录加入模块搜索路径,此时src会被识别为顶层模块,cycle_gan.py中的原导入语句无需修改。
方式B:在代码中手动添加路径
在src/train.py的最顶部添加以下代码:
import sys from pathlib import Path # 将项目根目录加入搜索路径 sys.path.append(str(Path(__file__).parent.parent))
这段代码会自动获取项目根目录并添加到Python的模块搜索路径中,同样无需修改cycle_gan.py的导入语句。
方案3:以模块方式运行脚本
在项目根目录执行以下命令:
python3 -m src.train
这种方式会将根目录作为模块搜索路径,src会被当作一个顶层模块,此时cycle_gan.py中的原导入语句可以正常工作。如果train.py中的导入出现问题,可修改为相对导入:
from .cyclegan.models.cycle_gan import CycleGAN
内容的提问来源于stack exchange,提问作者woofwoof
相关产品推荐
相关产品推荐

