κ°λ°μλ₯Ό μν νλ‘μ νΈ κ²©λ¦¬ λ° μ’ μμ± κ΄λ¦¬λ₯Ό μν virtualenv λ° venvλ₯Ό μ¬μ©ν Python κ°μ νκ²½ μ€μ μ’ ν© κ°μ΄λ
Python Virtualenv μ€μ : 격리λ νκ²½ μμ±
νμ΄μ¬ κ°λ° μΈκ³μμ μ’ μμ±μ κ΄λ¦¬νκ³ νλ‘μ νΈ κ²©λ¦¬λ₯Ό 보μ₯νλ κ²μ κ°λ ₯νκ³ μ μ§ κ΄λ¦¬ κ°λ₯ν μ ν리μΌμ΄μ μ λ§λλ λ° λ§€μ° μ€μν©λλ€. μ΄λ₯Ό λ¬μ±νλ κ°μ₯ ν¨κ³Όμ μΈ λ°©λ² μ€ νλλ κ°μ νκ²½μ μ¬μ©νλ κ²μ λλ€. κ°μ νκ²½μ νΉμ νμ΄μ¬ μΈν°ν리ν°μ μ€μΉλ ν¨ν€μ§λ₯Ό ν¬ν¨νλ μ체 ν¬ν¨ λλ ν°λ¦¬μ λλ€. μ΄λ₯Ό ν΅ν΄ λ€λ₯Έ ν¨ν€μ§ λ²μ μΌλ‘ μΈν μΆ©λ μμ΄ κ°κΈ° κ³ μ ν μ’ μμ± μ§ν©μ κ°μ§ μ¬λ¬ νλ‘μ νΈλ₯Ό λμμ μμ ν μ μμ΅λλ€.
κ°μ νκ²½μ μ¬μ©νλ μ΄μ ?
λ κ°μ νμ΄μ¬ νλ‘μ νΈλ₯Ό μ§ν μ€μΈ μλ리μ€λ₯Ό μκ°ν΄ 보μΈμ. νλ‘μ νΈ Aλ νΉμ λΌμ΄λΈλ¬λ¦¬μ λ²μ 1.0μ νμλ‘ νλ λ°λ©΄, νλ‘μ νΈ Bλ λμΌν λΌμ΄λΈλ¬λ¦¬μ λ²μ 2.0μ νμλ‘ ν©λλ€. κ°μ νκ²½μ΄ μμΌλ©΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ μμ μΌλ‘ μ€μΉνλ©΄ ν νλ‘μ νΈμ νΈνμ± λ¬Έμ κ° λ°μν κ°λ₯μ±μ΄ λμ΅λλ€. κ°μ νκ²½μ κ° νλ‘μ νΈκ° μ체 ν¨ν€μ§ μ§ν©μ κ°μ§ μ μλ 격리λ 곡κ°μ μ 곡ν¨μΌλ‘μ¨ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.
κ°μ νκ²½ μ¬μ©μ μ£Όμ μ΄μ μ λ€μκ³Ό κ°μ΅λλ€.
- μ’ μμ± κ²©λ¦¬: κ° νλ‘μ νΈλ μ체 μ’ μμ± μ§ν©μ κ°μ Έ μΆ©λμ λ°©μ§ν©λλ€.
- λ²μ κ΄λ¦¬: κ° νλ‘μ νΈμ λν΄ ν¨ν€μ§μ μλ‘ λ€λ₯Έ λ²μ μ μ½κ² κ΄λ¦¬ν μ μμ΅λλ€.
- νλ‘μ νΈ μ¬νμ±: νλ‘μ νΈκ° μλ‘ λ€λ₯Έ λ¨Έμ μμ λμΌν μ’ μμ±μΌλ‘ μ½κ² 볡μ λ μ μλλ‘ λ³΄μ₯ν©λλ€.
- κΉ¨λν μ μ νκ²½: μ μ νμ΄μ¬ μ€μΉλ₯Ό κΉλνκ³ κΉλνκ² μ μ§ν©λλ€.
κ°μ νκ²½ μ€μ : virtualenv λ° venv
νμ΄μ¬μμ κ°μ νκ²½μ λ§λλ λ κ°μ§ μ£Όμ λκ΅¬κ° μμ΅λλ€. virtualenv
μ venv
μ
λλ€. virtualenv
λ μ€λ«λμ μ¬μ©λμ΄ μ¨ νμ¬ ν¨ν€μ§λ‘ κ΄λ²μν κΈ°λ₯μ μ 곡ν©λλ€. venv
λ νμ΄μ¬ 3.3 μ΄μμ λ΄μ₯λ λͺ¨λλ‘, virtualenv
μ κ²½λ λμμ μ 곡ν©λλ€. λ λꡬ λͺ¨λ λμΌν λͺ©νλ₯Ό λ¬μ±ν©λλ€. μ¦, 격리λ νμ΄μ¬ νκ²½μ λ§λλ κ²μ
λλ€.
virtualenv μ¬μ©
virtualenv
λ κ°μ νκ²½μ λ§λλ λ° μΈκΈ° μκ³ λ리 μ¬μ©λλ λꡬμ
λλ€. μ¬μ© λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
μ€μΉ
λ¨Όμ virtualenv
λ₯Ό μ€μΉν΄μΌ ν©λλ€. pipλ₯Ό μ¬μ©νμ¬ μνν μ μμ΅λλ€.
pip install virtualenv
κ°μ νκ²½ μμ±
virtualenv
κ° μ€μΉλλ©΄ νλ‘μ νΈ λλ ν°λ¦¬μ κ°μ νκ²½μ λ§λ€ μ μμ΅λλ€. ν°λ―Έλμμ νλ‘μ νΈ λλ ν°λ¦¬λ‘ μ΄λνμ¬ λ€μ λͺ
λ Ήμ μ€νν©λλ€.
virtualenv myenv
μ΄ λͺ
λ Ήμ κ°μ νκ²½μ ν¬ν¨νλ myenv
λΌλ μ λλ ν°λ¦¬(μνλ μ΄λ¦μ μ¬μ©ν μ μμ)λ₯Ό λ§λλλ€. myenv
λλ ν°λ¦¬μλ λ€μ νμ λλ ν°λ¦¬κ° ν¬ν¨λ©λλ€.
bin
: νμ΄μ¬ μ€ν νμΌ λ° νμ±ν μ€ν¬λ¦½νΈλ₯Ό ν¬ν¨ν©λλ€.include
: νμ΄μ¬ νμ₯μ μ»΄νμΌνκΈ° μν C ν€λλ₯Ό ν¬ν¨ν©λλ€.lib
: μ€μΉλ ν¨ν€μ§κ° μμ£Όν site-packages λλ ν°λ¦¬λ₯Ό ν¬ν¨ν©λλ€.
κ°μ νκ²½ νμ±ν
κ°μ νκ²½μ μ¬μ©νλ €λ©΄ νμ±νν΄μΌ ν©λλ€. μ΄λ κ² νλ©΄ κ°μ νκ²½ λ΄μ νμ΄μ¬ μΈν°ν리ν°μ ν¨ν€μ§λ₯Ό μ¬μ©νλλ‘ μ Έμ νκ²½ λ³μκ° μμ λ©λλ€.
Linux/macOSμμλ λ€μ λͺ λ Ήμ μ¬μ©ν©λλ€.
source myenv/bin/activate
Windowsμμλ λ€μ λͺ λ Ήμ μ¬μ©ν©λλ€.
myenv\Scripts\activate
νμ±ν ν ν°λ―Έλ ν둬ννΈκ° λ³κ²½λμ΄ νμ± κ°μ νκ²½μ λνλ
λλ€(μ: (myenv) $
). μ΄μ pipλ₯Ό μ¬μ©νμ¬ μ€μΉνλ λͺ¨λ ν¨ν€μ§λ κ°μ νκ²½ λ΄μ μ€μΉλλ©° μ μ νμ΄μ¬ μ€μΉ λλ λ€λ₯Έ κ°μ νκ²½μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€.
κ°μ νκ²½ λΉνμ±ν
νλ‘μ νΈ μμ μ΄ λλλ©΄ λ€μ λͺ λ Ήμ μ€ννμ¬ κ°μ νκ²½μ λΉνμ±νν μ μμ΅λλ€.
deactivate
μ΄λ κ² νλ©΄ ν°λ―Έλ ν둬ννΈκ° μ μ μνλ‘ λμκ°κ³ μ μ νμ΄μ¬ μ€μΉλ₯Ό λ€μ μ¬μ©νκ² λ©λλ€.
venv μ¬μ©
venv
λ νμ΄μ¬ 3.3 μ΄μμ λ΄μ₯λ λͺ¨λλ‘, virtualenv
μ κ²½λ λμμ μ 곡ν©λλ€. ν¬ν¨νλ νμ΄μ¬ λ²μ μ μ¬μ©νλ κ²½μ° μΌλ°μ μΌλ‘ venv
λ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
κ°μ νκ²½ μμ±
venv
λ₯Ό μ¬μ©νμ¬ κ°μ νκ²½μ λ§λ€λ €λ©΄ ν°λ―Έλμμ νλ‘μ νΈ λλ ν°λ¦¬λ‘ μ΄λνμ¬ λ€μ λͺ
λ Ήμ μ€νν©λλ€.
python3 -m venv myenv
μ΄ λͺ
λ Ήμ virtualenv
μ μ μ¬νκ² κ°μ νκ²½μ ν¬ν¨νλ myenv
(λλ μ νν μ΄λ¦)λΌλ μ λλ ν°λ¦¬λ₯Ό λ§λλλ€.
κ°μ νκ²½ νμ±ν
venv
μ νμ±ν νλ‘μΈμ€λ virtualenv
μ λμΌν©λλ€. Linux/macOSμμλ λ€μ λͺ
λ Ήμ μ¬μ©ν©λλ€.
source myenv/bin/activate
Windowsμμλ λ€μ λͺ λ Ήμ μ¬μ©ν©λλ€.
myenv\Scripts\activate
νμ±ν ν ν°λ―Έλ ν둬ννΈλ νμ± κ°μ νκ²½μ λνλ΄λ©° μ€μΉνλ λͺ¨λ ν¨ν€μ§λ ν΄λΉ νκ²½ λ΄μ 격리λ©λλ€.
κ°μ νκ²½ λΉνμ±ν
venv
νκ²½ λΉνμ±νλ virtualenv
μ λμΌν©λλ€.
deactivate
pipλ₯Ό μ¬μ©ν μ’ μμ± κ΄λ¦¬
κ°μ νκ²½μ νμ±νν ν pipλ₯Ό μ¬μ©νμ¬ ν¨ν€μ§λ₯Ό μ€μΉ, μ κ·Έλ μ΄λ λ° μ κ±°ν μ μμ΅λλ€. μΌλ°μ μΈ pip λͺ λ Ήμ λ€μκ³Ό κ°μ΅λλ€.
- ν¨ν€μ§ μ€μΉ:
pip install package_name
(μ:pip install requests
) - νΉμ λ²μ μ ν¨ν€μ§ μ€μΉ:
pip install package_name==version
(μ:pip install requests==2.26.0
) - ν¨ν€μ§ μ
κ·Έλ μ΄λ:
pip install --upgrade package_name
(μ:pip install --upgrade requests
) - ν¨ν€μ§ μ κ±°:
pip uninstall package_name
(μ:pip uninstall requests
) - μ€μΉλ ν¨ν€μ§ λͺ©λ‘:
pip list
λλpip freeze
μꡬμ¬ν νμΌ μμ±
νλ‘μ νΈμ μ’
μμ±μ λ€λ₯Έ λ¨Έμ μμ μ½κ² 볡μ ν μ μλλ‘ νλ €λ©΄ requirements.txt
νμΌμ μμ±νλ κ²μ΄ μ’μ΅λλ€. μ΄ νμΌμλ κ°μ νκ²½μ μ€μΉλ λͺ¨λ ν¨ν€μ§μ ν΄λΉ λ²μ μ΄ λμ΄λ©λλ€.
requirements.txt
νμΌμ μμ±νλ €λ©΄ κ°μ νκ²½μ νμ±ννκ³ λ€μ λͺ
λ Ήμ μ€νν©λλ€.
pip freeze > requirements.txt
μ΄λ κ² νλ©΄ νλ‘μ νΈ λλ ν°λ¦¬μ requirements.txt
λΌλ νμΌμ΄ μμ±λ©λλ€. κ·Έλ° λ€μ μ΄ νμΌμ νλ‘μ νΈμ λ²μ κ΄λ¦¬ μμ€ν
(μ: Git)μ ν¬ν¨νμ¬ λ€λ₯Έ μ¬λλ€μ΄ λμΌν μ’
μμ±μ μ½κ² μ€μΉν μ μλλ‘ ν μ μμ΅λλ€.
μꡬμ¬ν νμΌμμ μ€μΉ
requirements.txt
νμΌμ λμ΄λ μ’
μμ±μ μ€μΉνλ €λ©΄ κ°μ νκ²½μ νμ±ννκ³ λ€μ λͺ
λ Ήμ μ€νν©λλ€.
pip install -r requirements.txt
μ΄λ κ² νλ©΄ requirements.txt
νμΌμ λͺ¨λ ν¨ν€μ§μ μ§μ λ λ²μ μ΄ μ€μΉλ©λλ€.
κ°μ νκ²½ μ¬μ©μ λν λͺ¨λ² μ¬λ‘
κ°μ νκ²½μ μ¬μ©ν λ λ°λΌμΌ ν λͺ κ°μ§ λͺ¨λ² μ¬λ‘κ° μμ΅λλ€.
- κ° νλ‘μ νΈμ λν΄ κ°μ νκ²½ μμ±: μ΄λ₯Ό ν΅ν΄ κ° νλ‘μ νΈλ μ체 격리λ μ’ μμ± μ§ν©μ κ°κ² λ©λλ€.
- μꡬμ¬ν νμΌ μ΅μ μν μ μ§: νλ‘μ νΈμ νμ¬ μ’
μμ±μ λ°μνλλ‘
requirements.txt
νμΌμ μ κΈ°μ μΌλ‘ μ λ°μ΄νΈν©λλ€. - λ²μ κ΄λ¦¬ μ¬μ©: κ°μ νκ²½ λλ ν°λ¦¬λ₯Ό νλ‘μ νΈμ
.gitignore
νμΌμ ν¬ν¨νμ¬ λ²μ κ΄λ¦¬μ 컀λ°λμ§ μλλ‘ ν©λλ€.requirements.txt
νμΌλ§ 컀λ°ν©λλ€. - κ°μ νκ²½ μ΄λ¦ μΌκ΄λκ² μ§μ : νΌλμ νΌνκΈ° μν΄ κ°μ νκ²½μ μΌκ΄λ λͺ
λͺ
κ·μΉμ μ¬μ©ν©λλ€. μλ₯Ό λ€μ΄
.venv
λλvenv
λΌκ³ μ΄λ¦μ μ§μ ν μ μμ΅λλ€. - κ°μ νκ²½ κ΄λ¦¬μ μ¬μ©:
virtualenvwrapper
λλconda
μ κ°μ κ°μ νκ²½ κ΄λ¦¬μλ₯Ό μ¬μ©νμ¬ μ¬λ¬ κ°μ νκ²½μ κ΄λ¦¬λ₯Ό λ¨μννλ κ²μ κ³ λ €νμμμ€.
κ°μ νκ²½ κ΄λ¦¬μ
virtualenv
μ venv
λ κ°μ νκ²½μ λ§λλ νλ₯ν λꡬμ΄μ§λ§ μ¬λ¬ νλ‘μ νΈλ₯Ό μμ
ν λ κ΄λ¦¬κ° λ²κ±°λ‘μΈ μ μμ΅λλ€. κ°μ νκ²½ κ΄λ¦¬μλ κ°μ νκ²½ κ΄λ¦¬λ₯Ό μν μΆκ° κΈ°λ₯κ³Ό νΈμ κΈ°λ₯μ μ 곡ν©λλ€.
virtualenvwrapper
virtualenvwrapper
λ virtualenv
λ₯Ό νμ₯νμ¬ κ°μ νκ²½μ λ μ½κ² λ§λ€κ³ κ΄λ¦¬νλ©° μμ
ν μ μλλ‘ νλ κΈ°λ₯ λͺ¨μμ
λλ€. κ°μ νκ²½μ λ§λ€κ³ , νμ±ννκ³ , λΉνμ±ννκ³ , μμ νλ λͺ
λ Ήκ³Ό μ¬μ© κ°λ₯ν νκ²½μ λμ΄νλ λͺ
λ Ήμ μ 곡ν©λλ€.
virtualenvwrapper
λ₯Ό μ€μΉνλ €λ©΄ pipλ₯Ό μ¬μ©ν©λλ€.
pip install virtualenvwrapper
virtualenvwrapper
μ μ€μ λ° μ¬μ©μ μ΄μ 체μ μ λ°λΌ λ€λ¦
λλ€. μμΈν μ§μΉ¨μ virtualenvwrapper
μ€λͺ
μλ₯Ό μ°Έμ‘°νμμμ€.
conda
conda
λ μ€ν μμ€ ν¨ν€μ§, μ’
μμ± λ° νκ²½ κ΄λ¦¬ μμ€ν
μ
λλ€. λ°μ΄ν° κ³Όν λ° κ³Όν μ»΄ν¨ν
μ μμ£Ό μ¬μ©λμ§λ§ μΌλ°μ μΈ νμ΄μ¬ κ°λ°μλ μ¬μ©ν μ μμ΅λλ€. conda
λ₯Ό μ¬μ©νλ©΄ κ°μ νκ²½μ λ§λ€κ³ κ΄λ¦¬ν μ μμ λΏλ§ μλλΌ ν¨ν€μ§λ₯Ό μ€μΉνκ³ κ΄λ¦¬ν μ μμ΅λλ€.
conda
λ₯Ό μ€μΉνλ €λ©΄ Anaconda μΉμ¬μ΄νΈμμ Anaconda λλ Minicondaλ₯Ό λ€μ΄λ‘λνμ¬ μ€μΉνμμμ€.
μ conda νκ²½μ λ§λ€λ €λ©΄ λ€μ λͺ λ Ήμ μ¬μ©ν©λλ€.
conda create --name myenv python=3.9
νκ²½μ νμ±ννλ €λ©΄:
conda activate myenv
νκ²½μ λΉνμ±ννλ €λ©΄:
conda deactivate
Condaλ μ’ μμ± λ° νκ²½ κ΄λ¦¬λ₯Ό μν ν¬κ΄μ μΈ λꡬ μΈνΈλ₯Ό μ 곡νλ―λ‘ λ³΅μ‘ν νλ‘μ νΈμ μΈκΈ° μλ μ νμ λλ€.
μ μ κ³ λ € μ¬ν λ° λͺ¨λ² μ¬λ‘
μ μ νμμ μμ νκ±°λ μ¬λ¬ μ§μμ μ ν리μΌμ΄μ μ λ°°ν¬ν λ λ€μ μμλ₯Ό κ³ λ €νμμμ€.
- μΌκ΄λ νμ΄μ¬ λ²μ : λͺ¨λ νμμ΄ κ°λ°μ μν΄ λμΌν νμ΄μ¬ λ²μ μ μ¬μ©νλλ‘ ν©λλ€. μ΄λ κ² νλ©΄ ν΅ν© λ° λ°°ν¬ μ€μ μκΈ°μΉ μμ νΈνμ± λ¬Έμ κ° λ°©μ§λ©λλ€. μλ₯Ό λ€μ΄, μΌλ³Έ λμΏμ κ°λ° νκ³Ό μκ΅ λ°λμ λ€λ₯Έ νμ λ¨μΌ νμ΄μ¬ λ²μ μ λμν΄μΌ ν©λλ€.
- νμ€νλ νκ²½: κ°μ νκ²½κ³Ό ν¨κ» Docker λλ Vagrantμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ λ€μν μ΄μ 체μ λ° μΈνλΌμ κ±Έμ³ μΌκ΄λ κ°λ° λ° λ°°ν¬ νκ²½μ λ§λλλ€. μ΄λ κ² νλ©΄ μ ν리μΌμ΄μ μ΄ κΈ°λ³Έ μμ€ν μ κ΄κ³μμ΄ μμλλ‘ μλν¨μ 보μ₯ν μ μμ΅λλ€. macOSμμ κ°λ°λ μ ν리μΌμ΄μ μ Linux μλ²μ λ°°ν¬νλ κ²μ μμν΄ λ³΄μμμ€. Dockerλ₯Ό μ¬μ©νλ©΄ μΌκ΄λ λμμ 보μ₯ν μ μμ΅λλ€.
- μ’ μμ± κ³ μ : `requirements.txt` νμΌμ μ νν λ²μ λ²νΈλ₯Ό μ¬μ©ν©λλ€. μ΄λ κ² νλ©΄ λͺ¨λ μ¬λμ΄ μ νν λμΌν λ²μ μ μ’ μμ±μ μ¬μ©νκ² λμ΄ λΌμ΄λΈλ¬λ¦¬ λ²μ μ°¨μ΄λ‘ μΈν μ μ¬μ μΈ λ²κ·Έκ° μνλ©λλ€. `requests>=2.0` λμ `requests==2.28.1`μ μ¬μ©ν©λλ€.
- ν¬λ‘μ€ νλ«νΌ νΈνμ±: κ°λ° μ΄κΈ° λ¨κ³μμ νλ«νΌλ³ λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°νκΈ° μν΄ λ€μν μ΄μ 체μ (Windows, macOS, Linux)μμ μ ν리μΌμ΄μ μ ν μ€νΈν©λλ€. ν΄λΌμ°λ κΈ°λ° CI/CD νμ΄νλΌμΈμ λ€μν νλ«νΌμμ ν μ€νΈλ₯Ό μλνν μ μμ΅λλ€.
- μκ°λ: μκ° κ΄λ ¨ λ°μ΄ν°μ κ²½μ° μΌκ΄λ μκ°λ(μ: UTC)λ₯Ό μ¬μ©νκ³ μκ°λ λ³νμ μ μ νκ² μ²λ¦¬ν©λλ€. μ¬λ¬ μ§μμ κ±Έμ³ λ€λ₯Ό μ μμΌλ―λ‘ λ‘컬 μκ°λμ μμ‘΄νμ§ λ§μμμ€.
- λ¬Έμ μΈμ½λ©: κ΅μ λ¬Έμλ₯Ό μ¬λ°λ₯΄κ² μ²λ¦¬νλ €λ©΄ λͺ¨λ ν μ€νΈ νμΌ(μμ€ μ½λ λ° κ΅¬μ± νμΌ ν¬ν¨)μ UTF-8 μΈμ½λ©μ μ¬μ©ν©λλ€.
μΌλ°μ μΈ λ¬Έμ ν΄κ²°
κ°μ νκ²½μ μ¬μ©ν λ λ°μν μ μλ λͺ κ°μ§ μΌλ°μ μΈ λ¬Έμ μ ν΄κ²° λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
- νμ±ν λ¬Έμ : κ°μ νκ²½ νμ±νμ λ¬Έμ κ° μλ κ²½μ° μ΄μ 체μ λ° μ Έμ μ¬λ°λ₯Έ νμ±ν μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νκ³ μλμ§ νμΈνμμμ€. νμ±ν μ€ν¬λ¦½νΈμ κ²½λ‘λ₯Ό λ€μ νμΈνκ³ μ€ν κ°λ₯νμ§ νμΈν©λλ€.
- ν¨ν€μ§ μ€μΉ λ¬Έμ : ν¨ν€μ§ μ€μΉμ λ¬Έμ κ° μλ κ²½μ° κ°μ νκ²½μ νμ±ννμΌλ©° μ¬λ°λ₯Έ λ²μ μ pipλ₯Ό μ¬μ©νκ³ μλμ§ νμΈν©λλ€. pipλ₯Ό μ΅μ λ²μ μΌλ‘ μ κ·Έλ μ΄λν΄μΌ ν μλ μμ΅λλ€.
- μ’
μμ± μΆ©λ: μ’
μμ± μΆ©λμ΄ λ°μνλ κ²½μ°
pipdeptree
λλpip-tools
λ₯Ό μ¬μ©νμ¬ μ’ μμ±μ λΆμνκ³ μΆ©λνλ ν¨ν€μ§λ₯Ό μλ³ν©λλ€. μΆ©λμ ν΄κ²°νκΈ° μν΄ νΉμ ν¨ν€μ§λ₯Ό μ κ·Έλ μ΄λνκ±°λ λ€μ΄κ·Έλ μ΄λν΄μΌ ν μ μμ΅λλ€. - κ°μ νκ²½ μμ: κ°μ νκ²½μ΄ μμλ κ²½μ° μμ νκ³ μ²μλΆν° λ€μ λ§λλ κ²μ μλν μ μμ΅λλ€.
κ²°λ‘
κ°μ νκ²½μ νμ΄μ¬ κ°λ°μμκ² νμμ μΈ λꡬλ‘, μ’
μμ± κ²©λ¦¬, λ²μ κ΄λ¦¬ λ° νλ‘μ νΈ μ¬νμ±μ μ 곡ν©λλ€. virtualenv
λλ venv
λ₯Ό μ¬μ©νλ©΄ νλ‘μ νΈλ₯Ό μλ‘ κ²©λ¦¬νκ³ μ μ νμ΄μ¬ μ€μΉλ₯Ό κΉλνκ² μ μ§ν μ μμ΅λλ€. μ’
μμ± λ³΅μ λ₯Ό μ½κ² νκΈ° μν΄ κ° νλ‘μ νΈμ λν΄ requirements.txt
νμΌμ μμ±νλ κ²μ μμ§ λ§μμμ€. μ΄ κ°μ΄λμ μ€λͺ
λ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ νμ΄μ¬ κ°λ° μν¬νλ‘λ₯Ό κ°μννκ³ λ κ°λ ₯νκ³ μ μ§ κ΄λ¦¬ κ°λ₯ν μ ν리μΌμ΄μ
μ λ§λ€ μ μμ΅λλ€. κΈλ‘λ² νμ
μ κ²½μ° νμ€νλ νκ²½κ³Ό μ μ€ν μ’
μμ± κ΄λ¦¬κ° κ°μ₯ μ€μν©λλ€.