2023-04-26기준
dotenv와 os.getenv가 제일 쉬운것 같아요
from dotenv import load_dotenv
load_dotenv()
# project의 setting
from os.path import join
# Build paths inside the project like this: BASE_DIR / 'subdir'.
# 상위폴더가 있어서 BASE_DIR을 아래와 같이 수정
BASE_DIR = Path(__file__).resolve().parent.parent.parent
print("BASE_DIR: ", BASE_DIR)
SECRET_KEY = os.getenv("SECRET_KEY")
참고 블로그
https://daco2020.tistory.com/480
이러한 폴더 구조에서 django가 루트의 .env 파일을 인식하게 하고, search_app의 .py들이 환경변수를 인식하게 해야함.
from pathlib import Path
import os, environ
from os.path import join
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
ENV_PATH = Path(__file__).resolve().parent.parent.parent
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env(env_file=os.path.join(ENV_PATH, ".env"))
# 변수 적용 예시
SECRET_KEY = env('SECRET_KEY')
# 환경변수를 불러오기 위한 코드
import django
from os import path
import sys
sys.path.insert(0,path.abspath('..'))
import 프로젝트명
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "프로젝트명.settings")
django.setup()
# 원하는 환경변수 불러오기
변수 = getattr(프로젝트명.settings, "환경변수", None)
- 참고블로그
[Python] "ModuleNotFoundError: No module named", 상위 디렉토리 import, sys.path에서 insert와 append 차이
- https://blog.boxcorea.com/wp/archives/2692
반응형