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

已将路径加入sys.path仍遇ModuleNotFoundError的技术求助

解决Python导入外部模块时的ModuleNotFoundError问题

问题排查与解决方案

1. 检查包结构的__init__.py完整性

Python识别包的前提是每个层级的目录下都存在__init__.py文件(可以是空文件)。你需要确保以下两个目录下都有该文件:

  • /home/lbri/omnidata/omnidata_tools/torch/
  • /home/lbri/omnidata/omnidata_tools/torch/data/

如果之前只给data目录加了__init__.py,补上torch目录下的文件后再尝试运行。

2. 避免路径优先级导致的同名冲突

从你的sys.path输出可以看到,第一个搜索路径是/home/lbri/sdfstudio/scripts/datasets,如果这个路径下存在同名的data目录/模块,Python会优先加载它,导致找不到目标模块。

验证方法:在脚本中添加以下代码,查看Python实际搜索到的data模块位置:

import importlib.util
import sys

spec = importlib.util.find_spec('data')
if spec:
    print(f"Python找到的data模块路径: {spec.origin}")
else:
    print("未找到data模块")

如果输出的路径不是你目标的/home/lbri/omnidata/omnidata_tools/torch/data/,说明存在同名冲突。此时可以把目标路径插入到sys.path的最前面,让Python优先搜索:

# 替换append为insert(0, ...)
sys.path.insert(0, args.omnidata_path)

3. 尝试直接导入模块文件(绕过包结构问题)

如果上述方法都无效,可以直接加载目标模块文件,无需依赖包结构:

from importlib.machinery import SourceFileLoader

# 直接加载transforms.py文件
transforms_module = SourceFileLoader(
    'transforms', 
    '/home/lbri/omnidata/omnidata_tools/torch/data/transforms.py'
).load_module()
get_transform = transforms_module.get_transform

4. 验证路径的有效性

确保你添加的路径确实存在,并且当前用户有读取权限。可以在脚本中添加路径检查:

import os
assert os.path.exists(args.omnidata_path), f"路径不存在: {args.omnidata_path}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:18:36