[์ฝ๋ฉํ์ ] .env file ๋ง๋ค๊ณ ํ์ฉํ๊ธฐ : ๊ฐ๋จํ ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฐฉ๋ฒ

.env ํ์ผ์ด๋?
.env๋ ํ๊ฒฝ ๋ณ์(environment variables)๋ฅผ ์ ์ฅํ๋ ํ์ผ๋ก, API ํค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด, ์ค์ ๊ฐ์ ๋ณด๊ดํ ๋ ์ฌ์ฉ๋๋ค.
๋ณด์์ ์ค์ํ ์ ๋ณด๋ฅผ ๋ด์ ๋๊ณ github์ ์ ๋ก๋ ํ๊ธฐ ์ ์, .gitignore์ ์ถ๊ฐํ๋ฉด ๊ฐ์ธ์ ๋ณด๊ฐ ๊ณต์ ๋๋ ๊ฒ์ ๋ง์ ์ ์๋ค.
๊ฐ์ธ์ ๋ณด ๋ณดํธ ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ฐ ํ๊ฒฝ๋ง๋ค ๋ค๋ฅธ ์ค์ ๊ฐ์ผ๋ก ์ค์ ํ์ฌ ๋ณดํธํ ์ ์์ผ๋ฉฐ, .env ํ์ผ์ ๋ณ๊ฒฝํ๋ ๊ฒ๋ง์ผ๋ก ์ฝ๊ฒ ํ๊ฒฝ ์ค์ ๋ณ๊ฒฝ ๊ฐ๋ฅํด์ ๋ฐ๋ก .env ํ์ผ์ ๋ง๋๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค.
.env ํ์ผ ์์ฑ๋ฐฉ๋ฒ
1. ์ฐ์ ๋งฅ๊ณผ Linux OS์ ๋ช ๋ น์ด์ด๋ค.
nano .env
์ด ๋ช ๋ น์ด๋ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ .env ํ์ผ์ nano ์๋ํฐ๋ก ์ฌ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฌ๊ธฐ์ OPENAI_API_KEY ๋ฑ ์ฝ๋์ ์ ์ฅ๋์ด ๊ณต์ ๋๋ฉด ๊ณค๋ํ์ง๋ง, ํ์๋ก ํ๋ ์ ๋ณด๋ฅผ ํ๊ฒฝ์ผ๋ก ์ค์ ํ ์ ์๋ค.
nano๋ ๋ฆฌ๋ ์ค/์ ๋์ค์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ ํธ์ง๊ธฐ๋ก, ํฐ๋ฏธ๋์์ ์คํ๋๋ฉฐ, ๊ฐ๋จํ ์ค์ ํ์ผ์ ์์ ํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ค.
Ctrol + O ๋๋ฅด๊ณ , Ctl+ X ๋๋ฅด๋ฉด ํ์ผ์ด ์ ์ฅ๋๋ค.
์ด๋ ๊ฒ ํ์ผ์ ์ ์ฅํด๋ ls (๋ฆฌ์คํธ, ๋๋ ํ ๋ฆฌ ์์ ์๋ ํ์ผ๋ค์ ๋ณด์ฌ์ค๋ค.) ํด๋ณด๋ฉด .env ๊ฐ ์๋ณด์ธ๋ค. ๊ทธ๊ฒ์ .์ผ๋ก ์์ํ๋ ๊ฒฝ์ฐ hidden file๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ls -a๋ฅผ ํ๋ฉด ์์ฑ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์์ ๋ด์ฉ์ ํ์ธํ๊ณ ์ถ์ผ๋ฉด cat ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. cat(concatenate)์ ํ์ผ ๋ด์ฉ์ ์ถ๋ ฅํ๊ฑฐ๋, ์ฌ๋ฌ ํ์ผ์ ์ฐ๊ฒฐํ๋ ๋ฆฌ๋ ์ค/๋งฅ ๋ช ๋ น์ด์ด๋ค.
2. ๋ฐ๋ฉด ์๋์ฐ OS๋ ๋จ์ํ๋ค! ๋ฉ๋ชจ์ฅ์ ์ด๊ณ ํด๋น ๋ด์ฉ์ ๋ฃ์ ๋ค์์, ํ๋ก์ ํธ ํ์ผ์ ํด๋น ๋ด์ฉ์ ์ ์ฅํ๋ฉด ๋๋ค. ์ด ๋ ์ ์ฅํ๋ ๋ฌธ์ ํ์ผ์ "๋ชจ๋ ํ์ผ"๋ก ์ค์ ํ๊ณ , ํ์ผ ์ด๋ฆ์ .env๋ผ๊ณ ์ ์ฅํด์ผํ๋ค.
.env ํ์ผ ํ์ฉ
import os
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("OPENAI_API_KEY")
ํ์ด์ฌ ํ๊ฒฝ์์ pip install python-dotenv ๋ก dotenv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ฉด,
์ด๋ฐ์์ผ๋ก .env ๋ฅผ ํ์ฉํ๊ณ ์ถ์ ๋ dotenv ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ load_dotenv() ๋ฉ์๋๋ก ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋ค.
