인프런 커뮤니티 질문&답변

뱅준님의 프로필 이미지
뱅준

작성한 질문수

실전! FastAPI 입문

파이참 임포트 문제

작성

·

48

0

안녕하세요. fastapi를 사용해서 서버를 개발하고있는데, 한가지 불편한것이 있어서 여쭤보려고 합니다. 다름이 아니라 외부에 작성해놓은 함수를 import 할 때 생기는 문제인데요.

project

| - src

| - | - api

| - | - extension

| - | - exception

| - | - main.py

이렇게 프로젝트 트리가 구성되어 있다고 했을때, project 경로에서 uvicorn src.main:app 으로 서버를 실행하면 ModuleNotFoundError: No module named 'extension' 이런 에러가 발생합니다.

이게 import 를 할 때 src.from extension.~ import ~ 이렇게 되어있지 않고 import 할 때, 자동으로 from extension.~ import ~ 이렇게 import가 되어서 모듈을 찾지 못해 발생하는 에러인 것 같은데요.

혹시 자동으로 임포트 할 때부터 src.from extension.~ import ~ 이렇게 소스루트부터 import 하게 하는 설정이 따로 있을까요? 하나하나 적어주기가 너무 불편해서 여쭤봅니다 ㅠ

답변 1

0

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요. 혹시 src 디렉토리를 Sources Root로 지정해주셨나요?

스크린샷 2024-11-05 오전 11.06.04.png.webp

뱅준님의 프로필 이미지
뱅준
질문자

네 소스 디렉토리로 지정 했습니다..

image.png

 

신동현님의 프로필 이미지
신동현
지식공유자

혹시 어떤 경로에서 서버를 실행하고 계시나요? src 디렉토리에서 실행하고 계신게 맞을까요?

뱅준님의 프로필 이미지
뱅준
질문자

서버 실행은 src에서가 아닌 project 경로에서 uvicorn src.main:app 명령어로 실행하고 있습니다.

신동현님의 프로필 이미지
신동현
지식공유자

서버를 src 디렉토리에서 uvicorn main:app으로 실행하시고, 경로를 바꿔보시겠어요? from extension.~ import ~

현재 src 디렉토리를 FastAPI의 source root로 사용하고 있습니다.

뱅준님의 프로필 이미지
뱅준
질문자

매번 src로 이동해서 서버를 켜기가 좀 그래서, src.main:app 으로 켜고 있었는데 만약 이렇게 하고싶으면 project를 source root로 사용하면 될까요?

신동현님의 프로필 이미지
신동현
지식공유자

네 그럼 대신 import 경로에 src를 반드시 명시해주셔야합니다 :)

뱅준님의 프로필 이미지
뱅준

작성한 질문수

질문하기