λͺ©μ°¨
- ν¨ν€μ§ μΆ©λ, μ μκΈ°λ κ±ΈκΉ?
- κ°μνκ²½(Virtual Environment)μ΄λ?
- venvλ‘ κ°μνκ²½ λ§λ€κΈ°
- κ°μνκ²½ νμ±νμ λΉνμ±ν
- ν¨ν€μ§ μ€μΉ λ° requirements.txt κ΄λ¦¬
- μλ²μμ κ°μνκ²½ μ¬μ©νκΈ°
- μ 리 λ° λ€μ λ¨κ³
1. ν¨ν€μ§ μΆ©λ, μ μκΈ°λ κ±ΈκΉ?
Python νλ‘μ νΈλ₯Ό μ¬λ¬ κ° μ΄μνλ€ λ³΄λ©΄ μ΄λ° μν©μ΄ μκΉλλ€. νλ‘μ νΈ Aλ Django 3.2κ° νμνκ³ , νλ‘μ νΈ Bλ Django 4.2κ° νμν©λλ€. μμ€ν μ λ λ²μ μ λμμ μ€μΉν μ μμ΅λλ€.
λλ νμκ³Ό ν¨κ» κ°λ°νλλ° κ°μ μ»΄ν¨ν°μ ν¨ν€μ§ λ²μ μ΄ λ¬λΌ λ΄ μ»΄ν¨ν°μμλ μ λμκ°λ μ½λκ° νμ μ»΄ν¨ν°μμλ μ€λ₯κ° λλ μν©λ μκΉλλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ κ²μ΄ **κ°μνκ²½(Virtual Environment)**μ λλ€.
2. κ°μνκ²½(Virtual Environment)μ΄λ?
κ°μνκ²½μ νλ‘μ νΈλ§λ€ λ 립μ μΈ Python νκ²½μ λ§λλ κΈ°μ μ λλ€. κ° κ°μνκ²½μ μμ λ§μ Python μΈν°ν리ν°μ ν¨ν€μ§λ₯Ό κ°μ§λλ€.
μλ£Έ λΉμ λ‘ μ€λͺ νλ©΄, κ°μ 건물(μ»΄ν¨ν°)μ μμ§λ§ κ° μλ£Έ(κ°μνκ²½)μ λ 립λ 곡κ°μ λλ€. 201νΈμλ Django 3.2κ° μ€μΉλμ΄ μκ³ , 202νΈμλ Django 4.2κ° μ€μΉλμ΄ μμ΄λ μλ‘ μΆ©λνμ§ μμ΅λλ€.
Python 3.3 μ΄μμλ venv λͺ¨λμ΄ κΈ°λ³ΈμΌλ‘ λ΄μ₯λμ΄ μμ΄ λ³λ μ€μΉ μμ΄ μ¬μ©ν μ μμ΅λλ€.
3. venvλ‘ κ°μνκ²½ λ§λ€κΈ°
νλ‘μ νΈ λλ ν λ¦¬λ‘ μ΄λν©λλ€.
cd /home/ubuntu/myproject
κ°μνκ²½μ λ§λλλ€. venv λ€μ μ΄λ¦μ κ°μνκ²½ ν΄λ μ΄λ¦μ λλ€. κ΄λ‘μ μΌλ‘ venv λλ .venvλ₯Ό μ¬μ©ν©λλ€.
python3 -m venv venv
λͺ λ Ή μ€ν ν myproject/venv ν΄λκ° μμ±λ©λλ€. μ΄ ν΄λ μμ Python μΈν°ν리ν°μ ν¨ν€μ§κ° μ μ₯λ©λλ€.
4. κ°μνκ²½ νμ±νμ λΉνμ±ν
κ°μνκ²½μ λ§λ€μλ€κ³ μλμΌλ‘ μ μ©λμ§ μμ΅λλ€. μ¬μ©ν λλ§λ€ νμ±νν΄μΌ ν©λλ€.
Linux/Macμμ νμ±ν
source venv/bin/activate
νμ±νλλ©΄ ν°λ―Έλ ν둬ννΈ μμ (venv)κ° νμλ©λλ€.
(venv) ubuntu@server:~/myproject$
κ°μνκ²½ λΉνμ±ν
deactivate
λΉνμ±ννλ©΄ (venv) νμκ° μ¬λΌμ§κ³ μμ€ν κΈ°λ³Έ Python νκ²½μΌλ‘ λμκ°λλ€.
5. ν¨ν€μ§ μ€μΉ λ° requirements.txt κ΄λ¦¬
κ°μνκ²½μ΄ νμ±νλ μνμμ pipλ‘ ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
pip install django pip install requests flask
μ€μΉλ ν¨ν€μ§ λͺ©λ‘μ νμΈν©λλ€.
pip list
νμ¬ μ€μΉλ ν¨ν€μ§ λͺ©λ‘μ requirements.txt νμΌλ‘ μ μ₯ν©λλ€. λ€λ₯Έ νκ²½μμ λμΌν ν¨ν€μ§λ₯Ό μ€μΉν λ μ¬μ©ν©λλ€.
pip freeze > requirements.txt
requirements.txtλ₯Ό κΈ°λ°μΌλ‘ ν¨ν€μ§λ₯Ό μΌκ΄ μ€μΉν©λλ€. νμμ΄ νλ‘μ νΈλ₯Ό cloneν ν μ΄ λͺ λ ΉμΌλ‘ λμΌν νκ²½μ λ§λ€ μ μμ΅λλ€.
pip install -r requirements.txt
6. μλ²μμ κ°μνκ²½ μ¬μ©νκΈ°
μλ²μ μ½λλ₯Ό λ°°ν¬ν λλ κ°μνκ²½μ μ¬μ©νλ κ²μ΄ κΆμ₯λ©λλ€.
μλ²μμ νλ‘μ νΈ ν΄λλ‘ μ΄λ ν κ°μνκ²½μ λ§λλλ€.
cd /home/ubuntu/myproject python3 -m venv venv
κ°μνκ²½μ νμ±ννκ³ ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
source venv/bin/activate pip install -r requirements.txt
μ±μ μ€νν λλ κ°μνκ²½μ΄ νμ±νλ μνμμ μ€νν©λλ€.
systemd μλΉμ€λ‘ μ±μ κ΄λ¦¬ν λλ μλΉμ€ νμΌμ κ°μνκ²½ Python κ²½λ‘λ₯Ό μ§μ μ§μ ν©λλ€.
ExecStart=/home/ubuntu/myproject/venv/bin/python app.py
μ΄λ κ² νλ©΄ κ°μνκ²½μ μλμΌλ‘ νμ±ννμ§ μμλ κ°μνκ²½μ Pythonκ³Ό ν¨ν€μ§λ₯Ό μ¬μ©ν©λλ€.
7. μ 리 λ° λ€μ λ¨κ³
μ€λ λ°°μ΄ ν΅μ¬μ μ 리ν©λλ€.
- κ°μνκ²½μ νλ‘μ νΈλ§λ€ λ 립μ μΈ Python ν¨ν€μ§ νκ²½μ λ§λλ κΈ°μ μ λλ€.
- python3 -m venv venvλ‘ μμ±νκ³ source venv/bin/activateλ‘ νμ±νν©λλ€.
- pip freeze > requirements.txtλ‘ ν¨ν€μ§ λͺ©λ‘μ μ μ₯νκ³ pip install -r requirements.txtλ‘ λμΌ νκ²½μ μ¬νν©λλ€.
- μλ² λ°°ν¬ μμλ κ°μνκ²½ μ¬μ©μ κΆμ₯ν©λλ€.
λ€μ κΈμμλ TCPμ UDPμ μ°¨μ΄, κ°λ°μκ° κΌ μμμΌ ν λ€νΈμν¬ κΈ°μ΄λ₯Ό μμλ³΄κ² μ΅λλ€.