python module not found (경로 참조 문제)

2021. 6. 10. 10:21문제들

발생 및 원인

보통 상대경로로 되어있는 코드를 다른경로에서 참조할 때 발생한다

이때 해결방법은 내 경우 두가지이다.

  1. 적절한 절대경로에서 참조할 것
  2. 상대경로를 절대경로로 참조하게 할 것

 

 

2의 경우로 할 때 구분할 것이 있다.

 

예시

C:\Users\sypha\Desktop\tts>python fasttts/synth_module.py

 

현재 working directory

os.getcwd()

C:\Users\sypha\Desktop\tts>

 

module(python file)이 속한 directory

os.path.dirname(os.path.abspath(__file__))

C:\Users\sypha\Desktop\tts\fasttts

 

 

이때 상대경로가 제대로 처리가 안되어있을 경우에는

C:\Users\sypha\Desktop\tts\fasttts\inference\foo.py

C:\Users\sypha\Desktop\tts\inference\foo.py 에서 찾게되어 오류가 발생한다.

 

 

해결

 

 

따라서

mb_melgan_config = AutoConfig.from_pretrained('TensorFlowTTS/examples/multiband_melgan/conf/multiband_melgan.v1.yaml')

와 같은 코드를

 

import os

module_path = os.path.dirname(os.path.abspath(__file__))

mb_melgan_config = AutoConfig.from_pretrained(os.path.join(module_path,'TensorFlowTTS/examples/multiband_melgan/conf/multiband_melgan.v1.yaml'))

 

위와같이 절대경로로 치환해서 적용하면 다른 working directory에서 실행해도 오류가 발생하지 않는다.

 

참조

https://itmining.tistory.com/122

 

happy하다.