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

无需手动添加路径解决同文件夹下的ModuleNotFoundError问题

问题

运行同文件夹下的test_audio2coeff.py脚本时,遇到ModuleNotFoundError,无法导入同目录的audio2pose_models模块。

目录结构

.
├── audio2exp_models
│   ├── audio2exp.py
│   ├── networks.py
│   └── __pycache__
│       ├── audio2exp.cpython-38.pyc
│       └── networks.cpython-38.pyc
├── audio2pose_models
│   ├── audio2pose.py
│   ├── audio_encoder.py
│   ├── cvae.py
│   ├── discriminator.py
│   ├── networks.py
│   ├── __pycache__
│   │   ├── audio2pose.cpython-38.pyc
│   │   ├── audio_encoder.cpython-38.pyc
│   │   ├── cvae.cpython-38.pyc
│   │   ├── discriminator.cpython-38.pyc
│   │   ├── networks.cpython-38.pyc
│   │   └── res_unet.cpython-38.pyc
│   └── res_unet.py
├── test_audio2coeff.py
└── utils
    ├── audio.py
    ├── croper.py
    ├── face_enhancer.py
    ├── hparams.py
    ├── init_path.py
    ├── model2safetensor.py
    ├── paste_pic.py
    ├── preprocess.py
    ├── safetensor_helper.py
    ├── text2speech.py
    └── videoio.py

test_audio2coeff.py开头代码

import os 
import torch
import random
import numpy as np
from scipy.io import savemat
from yacs.config import CfgNode as CN
from scipy.signal import savgol_filter
import sys

print('__file__:    ', __file__)
print('sys_path : ', sys.path)
from audio2pose_models.audio2pose import Audio2Pose
from audio2exp_models.networks import SimpleWrapperV2 
from audio2exp_models.audio2exp import Audio2Exp  

运行错误信息

__file__:     /home/justin/workspace/StyleHEAT/third_part/SadTalker/src/test_audio2coeff.py
sys_path :  ['/home/justin/workspace/StyleHEAT', '/home/justin/.conda/envs/StyleHEAT/lib/python37.zip', '/home/justin/.conda/envs/StyleHEAT/lib/python3.7', '/home/justin/.conda/envs/StyleHEAT/lib/python3.7/lib-dynload', '/home/justin/.conda/envs/StyleHEAT/lib/python3.7/site-packages', '/home/justin/workspace/StyleHEAT/third_part/SadTalker']
  0%|                                                                                                   | 0/1 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "inference.py", line 352, in <module>
    main()
  File "inference.py", line 339, in main
    audio_reenactment(generator, data, args.audio_path)
  File "inference.py", line 86, in audio_reenactment
    from third_part.SadTalker.src.test_audio2coeff import Audio2Coeff
  File "/home/justin/workspace/StyleHEAT/third_part/SadTalker/src/test_audio2coeff.py", line 12, in <module>
    from audio2pose_models.audio2pose import Audio2Pose
ModuleNotFoundError: No module named 'audio2pose_models'

已知可通过添加路径到sys.path解决,但希望找到无需手动追加路径的方案,询问问题原因及解决办法。


原因分析
  • Python模块查找机制:Python仅在sys.path列表中的目录内查找模块。从输出的sys_path可以看到,test_audio2coeff.py所在的/home/justin/workspace/StyleHEAT/third_part/SadTalker/src目录不在sys.path中,导致Python无法定位同目录下的audio2pose_models和audio2exp_models模块。
  • 执行上下文问题:脚本是被inference.py通过from third_part.SadTalker.src.test_audio2coeff import Audio2Coeff导入执行的,此时Python的工作目录是/home/justin/workspace/StyleHEAT,而非test_audio2coeff.py所在的src目录,因此不会自动将src目录加入sys.path。
解决方案

以下方法均无需手动临时追加路径,可长期解决问题:

方法1:用相对导入+标记包目录

  1. 在audio2pose_models、audio2exp_models、utils以及src目录下,各创建一个空的__init__.py文件,将这些目录标记为Python可识别的包。
  2. 修改test_audio2coeff.py中的导入语句为相对导入:
# test_audio2coeff.py中修改导入部分
from .audio2pose_models.audio2pose import Audio2Pose
from .audio2exp_models.networks import SimpleWrapperV2 
from .audio2exp_models.audio2exp import Audio2Exp  

当前inference.py中导入test_audio2coeff的方式已经符合包导入要求,无需额外修改。

方法2:将src目录加入Python环境变量

  • 临时生效:在终端执行以下命令
export PYTHONPATH="/home/justin/workspace/StyleHEAT/third_part/SadTalker/src:$PYTHONPATH"
  • 永久生效:将上述命令添加到你的shell配置文件(如~/.bashrc、~/.zshrc),执行source ~/.bashrc(对应你的配置文件)使修改生效。

方法3:安装为可编辑项目包

  1. 在/home/justin/workspace/StyleHEAT/third_part/SadTalker目录下创建setup.py文件,内容如下:
from setuptools import setup, find_packages

setup(
    name='SadTalker',
    version='0.1',
    packages=find_packages(where='src'),
    package_dir={'': 'src'},
)
  1. 在终端进入该目录,执行:
pip install -e .

此操作会将项目以可编辑模式安装到Python环境,Python会自动识别src目录下的所有包,无需手动配置路径。


内容的提问来源于stack exchange,提问作者Ahn Jun-Yeong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:16:29