κ°μνκ²½μ μ μ¬μ©ν κΉ?
νμ¬λ΄μ Pythonμ μ΄μ©ν νλ‘μ νΈκ° λ§μ΅λλ€. 2. λ λ²μ μ μ¬μ©νλ νλ‘μ νΈλ μκ³ 3. λ λ²μ μ μ¬μ©νλ νλ‘μ νΈλ μμ΅λλ€. λ§μ½ κ° νλ‘μ νΈκ° κ°λ³μ μΌλ‘ μλ‘ νλμ μλ²λ₯Ό μ¬μ©ν΄μ μλΉμ€λκ³ μλ€λ©΄ μ€μΉλ Python μΈν°νλ¦¬ν° νλλ§ μ¬μ©ν΄λ λκΈ° λλ¬Έμ ν° λ¬Έμ κ° μμ κ² μ λλ€. κ·Έλ°λ° λ§μ½ νλμ μλ²μ μ¬λ¬ νλ‘μ νΈκ° μλΉμ€λκ³ μκ³ μ€μΉλ Python μΈν°ν리ν°λ§ μ¬μ©νλ©΄ μ΄λ€ λ¬Έμ κ° λ°μν κΉμ?
3κ°μ§ νλ‘μ νΈκ° νλμ μλ²μμ μ΄μλκ³ μλ κ²½μ°... Project3μ κ²½μ° 3.8 λ²μ μ μ¬μ©νλ νλ‘μ νΈλ νλλ°μ μκΈ° λλ¬Έμ νμ¬μ μμ μμλ λ¬Έμ κ° μμ§λ§... Python 3.9 λ²μ μ μ¬μ©νλ Project1κ³Ό Project2μ κ²½μ° νΈνμ± λ¬Έμ κ° λ°μν μ μμ΅λλ€. Project1μμ λ¨Όμ Package C 1.5.5 λ²μ μ μ€μΉνκ³ Project2κ° κ°λ°λλ©΄μ Package C 2.2.1 λ²μ μΌλ‘ κ°λ°λμλ€κ³ κ°μ νκ² μ΅λλ€. Project2κ° μλΉμ€λλ©΄μ Package Cλ₯Ό 1.5.5 --> 2.2.1 λ²μ μΌλ‘ μ κ·Έλ μ΄λλ₯Ό ν΄λ²λ Έμ΅λλ€. μ΄ λ Project1μ΄ κ°μκΈ° λ¬Έμ κ° μκΈ°κ³ μ μμλνμ§ μμ μ μμ΅λλ€. Package Cκ° μ κ·Έλ μ΄λλλ©΄μ μλ‘μ΄ λ©€λ²κ° μΆκ°λκ±°λ μμ λμ΄μ νΈνμ΄ μλλ κ² μΌ μλ μκ³ ... PackageAμ Bμ Package Cκ° μ’ μλμ΄ μꡬνλ λ²μ μ΄ λ¬λΌμ κ·Έλ΄ μλ μκ³ ... μ΄μ²λΌ νΈνμ λν λ¬Έμ κ° λ°μνμ λ μΆμ νκΈ°κ° μκ°λ³΄λ€ μ΄λ ΅μ΅λλ€.
μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ κ°μνκ²½μ μ¬μ©ν΄μ νλ‘μ νΈλ³λ‘ μ¬μ©νλ μΈν°ν리ν°μ ν¨ν€μ§μ 곡κ°μ λΆλ¦¬ν μ μμ΅λλ€.
κ°μνκ²½ λ§λ€κΈ°
μμ λ Mac, Linuxμμ μ§ν
# κ°μνκ²½μ μ¬μ©ν νλ‘μ νΈ λλ ν 리 μμ±
$ mkdir project1
# κ°μνκ²½ μμ±
$ python3.9 -m venv project1/.venv
# κ°μνκ²½ μ€ν
$ source project1/.venv/bin/activate
# python3.9λ₯Ό μ¬μ©νλ κ² νμΈ
(.venv) $ python -V
Python 3.9.5
# κ°μνκ²½μμ ν¨ν€μ§ μ€μΉ
(.venv) $ pip install pytest
(.venv) $ pip show pytest
Name: pytest
Version: 6.2.4
Summary: pytest: simple powerful testing with Python
Home-page: https://docs.pytest.org/en/latest/
Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others
Author-email: None
License: MIT
Location: /Users/Jamong/workspace/project1/.venv/lib/python3.9/site-packages
Requires: packaging, attrs, pluggy, toml, iniconfig, py
Required-by:
# κ°μνκ²½ λΉ μ Έλκ°κΈ°
(.venv) $ deactivate
python2 λ²μ μμλ virtualenvλΌλ μΈλΆ ν¨ν€μ§λ₯Ό μ¬μ©ν΄μ κ°μνκ²½μ μμ±νλλ°... python 3.3λΆν°λ venvλͺ¨λμ΄ λ΄μ₯λμ΄ μμ΄ λ³λμ μ€μΉ μμ΄ κ°μνκ²½μ μμ±ν μ μμ΅λλ€. μ μμ μμλ κ°μνκ²½ python3.9 μΈν°ν리ν°μ venv λͺ¨λμ μ΄μ©ν΄μ κ°μνκ²½ μμ±νκ³ μ€νν΄μ pipλ₯Ό μ΄μ©ν΄μ pytest ν¨ν€μ§λ₯Ό μ€μΉ νμ΅λλ€. pytest 6.2.4 λ²μ μ ν΄λΉ κ°μ νκ²½μμλ§ μ¬μ©ν μ μμ΅λλ€.
$ pip3.9 show pytest
WARNING: Package(s) not found: pytest
κ°μ νκ²½μ λΉ μ Έλμ¨ λ€μ μ΄κΈ°μ μ€μΉλ python3.9μ μ°κ²°λ pipλ₯Ό ν΅ν΄ pytestκ° μ€μΉλμ΄ μλμ§ νμΈν΄λ³΄λ©΄... μλ€λ κ²½κ³ λ₯Ό νμΈν μ μμ΅λλ€. μ΄μ²λΌ νκ²½μ λΆλ¦¬ν΄μ μ¬μ©νμ¬ μμ‘΄μ±, νΈνμ± λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
κ°μνκ²½μΌλ‘ Python Script μ€νμ μ΄λ»κ² ν κΉμ?
κ°μνκ²½μ μ μ¬μ©νκ³ μ΄λ»κ² μμ±νλμ§ μμλ΄€λλ°... κ·ΈλΌ μ΄ κ°μνκ²½μ μ΄λ»κ² μ΄μ©ν κΉμ? 2κ°μ§ κ΄μ μμ λ³΄κ² μ΅λλ€. μ²«λ² μ§Έλ python λͺ λ Ήμ μ¬μ©ν΄μ μ€ννλ λ°©λ²κ³Ό IDE μλν°μμ μ¬μ©νλ λ°©λ² μ λλ€.
κ°μνκ²½μΌλ‘ Python Script μ€ν
test.py
import pytest
$ python3.9 test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
import pytest
ImportError: No module named pytest
python scriptλ₯Ό μ€νν λ... python λͺ λ Ήμ΄λ₯Ό μ¬μ©ν΄μ μ€ννμλλ°... μ΄κ² μ€μΉλ μΈν°ν리ν°λ₯Ό μ¬μ©νκΈ° λλ¬Έμ moduleμ΄ μλ€λ μ€λ₯κ° λ°μν©λλ€. scriptμμ κ°μνκ²½μ python μΈν°ν리ν°λ₯Ό μ¬μ©νλ €λ©΄ shebangμ μ¬μ©νκ±°λ κ°μνκ²½μ μΈν°ν리ν°λ₯Ό μ§μ μ¬μ©ν΄μ μ€ν νλ©΄ λ©λλ€.
κ°μνκ²½ μΈν°νλ¦¬ν° μ§μ μ€ν
$ /Users/Jamong/workspace/project1/.venv/bin/python test.py
shebang μ¬μ©
test.py
#! /Users/Jamong/workspace/project1/.venv/bin/python
import pytest
$ chmod 755 test.py
$ ./test.py
Intellij κ°μνκ²½ μ¬μ©
Intellijμμ Pythonμ λΉλ‘―νμ¬ Pythonμ κ°μνκ²½μ μ¬μ©νκΈ° μν΄μ Pluginμ΄ μ€μΉλμ΄ μμ΄μΌν©λλ€.
μμ μμ μμ κ°μνκ²½μ μμ±ν νλ‘μ νΈλ₯Ό μ΄μ΄μ€λλ€.
Project Structureλ₯Ό μ΄μ΄μ€λλ€.
SDKs νμμ Python SDKλ₯Ό μΆκ°ν΄μ€κ²λλ€.
IDEμμ κ°μνκ²½μ μλ‘κ² μμ±νκ³ νλ‘μ νΈλ₯Ό μ§νν μλ μμ΅λλ€. ν΄λΉ κΈμμλ μμμ μμ±ν κ°μνκ²½μ΄ μκΈ° λλ¬Έμ κ°μν©κ²½μ μΈν°ν리ν°λ₯Ό μ§μ ν΄μ€λλ€.
μΆκ°ν΄μ£Όλ©΄ ν΄λΉ SDKλ₯Ό μ νν΄μ£Όκ³ packages νμ ν΄λ¦ν΄λ³΄λ©΄ νμ¬ μ€μΉλμ΄ μλ ν¨ν€μ§λ€μ νμΈν μ μμ΅λλ€. μ΄μ μ μ€μΉν pytest λͺ¨λλ μλ κ²μ νμΈν μ μμ΅λλ€. "+" λͺ¨μ λ²νΌμ ν΄λ¦νλ©΄ IDEμΈν°νμ΄μ€μμ ν¨ν€μ§λ€μ κ²μν΄μ μ€μΉν μλ μμ΅λλ€.
IDEμμ κ²μν΄μ ν¨ν€μ§λ₯Ό μ€μΉν μ μμ΅λλ€.
Project νμμ μΆκ°ν SDKλ₯Ό μ€μ νκ³ μ μ©ν΄μ£Όλ©΄ μλ£μ λλ€.
test.py
import pytest
IDEμμ μ€νμμΌμ£Όλ©΄ μ΄μμμ΄ λͺ¨λμ λ°μμ€λ κ²μ νμΈν μ μμ΅λλ€.
μ 리
- Python κ°μνκ²½μ κ° νλ‘μ νΈλ₯Ό κ°λ³μ μΌλ‘ κ΄λ¦¬νμ¬ ν¨ν€μ§μ λν νΈνμ± λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ¬μ©λλ€.
- Python 3.3 λΆν°λ λ΄μ₯λμ΄ μλ λͺ¨λ venvλ₯Ό μ¬μ©ν΄μ κ°μνκ²½μ μμ±ν μ μλ€.
- Shebangμ μ΄μ©νκ±°λ κ°μνκ²½μ μΈν°ν리ν°λ₯Ό μ§μ μ¬μ©ν΄μ Python Scriptλ₯Ό μ€νν μ μλ€.
- IDEμμλ νλ¬κ·ΈμΈμ μ¬μ©ν΄μ κ°μνκ²½μ μ¬μ©ν μ μλ€.
λκΈ