Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

yolo 디펜던시 충돌 문제 #3

Closed
woosukji opened this issue Sep 7, 2022 · 1 comment
Closed

yolo 디펜던시 충돌 문제 #3

woosukji opened this issue Sep 7, 2022 · 1 comment

Comments

@woosukji
Copy link
Contributor

woosukji commented Sep 7, 2022

현재 메인 디펜던시로 사용하는 yolov5와 yolov7은 내부적으로 models, utils 등 서브모듈이 서로 호출하는 구조로 이루어짐.
따라서, python path 내에 동일한 이름의 파일이나 폴더가 있을 경우 import 문이 충돌하는 문제가 발생.
실제로 utils.py를 yolo 내부의 utils 모듈보다 먼저 탐색해 ModuleNotFoundError가 발생함.

이 문제는 두 가지 방식으로 해결할 수 있는데,

  1. (엄격한 방식) yolo 등 로컬 디펜던시에서 사용하는 submodule과 같은 이름의 파일/폴더를 일체 만들지 않는다.
  2. (유연한 방식) 해당 디펜던시를 사용하는 스크립트를 디렉토리로 분리하여, 해당 디렉토리에서만 같은 이름의 파일/폴더를 만들지 않게 주의한다.

2번과 같은 방식이 통하는 이유는, python 스크립트 내에서 import 시 참조하는 path가
해당 스크립트 디렉토리 (./) -> PYTHONPATH -> 설치된 패키지 위치 -> 스크립트 내에서 sys.path.append()로 추가한 위치
와 같이 구성되어 있기 때문에, 해당 스크립트 디렉토리만 조심하면 사실살 충돌할 가능성이 적기 때문임.
(현재 발생한 문제의 경우, utils 라는 이름의 패키지가 설치되어 있다면 추가적인 충돌이 발생할 수 있음)

References
ultralytics/yolov5#1181
https://docs.python.org/3/tutorial/modules.html#the-module-search-path

@juwon8891
Copy link
Contributor

덕분에 파이썬 path 탐색 방식에 대해 알아가네요 👍🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants