python - venv 소개
python-venv는 회사와 같은 공유된 개발 환경을 망가뜨리지 않고, 로컬 Path에 Virtual 환경을 구축하여 개발할 수 있도록 만들 수 있습니다.
사례: 팀 내에서 PyQt5를 5.9.0 버전으로 사용하는 것이 ground rule로 정해져 있다. 하지만 새로운 WebEngine 기능 테스트를 위해서 5.11.0 이상의 버전으로 업그레이드가 필요하다. 이럴 때 venv를 이용한다면, 개발자는 팀에서 개발하는 환경을 건드리지 않고 자유롭게 시도해 볼 수 있을 것이다.
python - venv 생성 및 실행
1. "~/project/venv" 에 환경 구축하기. 터미널에 아래의 명령어를 입력합니다.
# python3 -m venv <DIR>
python3 -m venv ~/project/venv
2. venv 동작하기
# source <DIR>/bin/activate
source ~/project/venv/bin/activate
3. (실행 확인) "which python"으로 python 환경을 확인했을 때, Path가 생성한 venv환경의 python을 가르키는 것을 확인할 수 있음
| Terminal |
| py-calmer $ which python /Users/py-calmer/project/venv/bin/python |
python - venv 환경에 패키지 설치
*예시는 "plotly" 설치 입니다.
1. venv가 activated된 터미널에서 아래의 명령어를 입력 합니다.
# python -m pip install {PackageName}
/Users/py-calmer/project/venv/bin/python3 -m pip install plotly
2. (실행 확인) 기존 global python 환경과 로컬 python-venv 환경 실행 결과를 비교했을 때, venv환경에만 plolty가 설치된 것을 확인
| Terminal : python-venv |
| py-calmer $ source ~/project/venv/bin/activate py-calmer $ which python /Users/py-calmer/project/venv/bin/python py-calmer $ python Python 3.11.1 (v3.11.1:a7a450f84a, Dec 6 2022, 15:24:06) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import plotly >>> |
| Terminal : python |
| py-calmer $ which python3 /usr/local/bin/python3 py-calmer $ python3 Python 3.11.1 (v3.11.1:a7a450f84a, Dec 6 2022, 15:24:06) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import plotly Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'plotly' >>> |
requirements.txt을 이용하여 특정 python 환경 복제하기
특정 python 환경의 패키지를 그대로 옮겨오고 싶은 경우, requirements.txt를 이용하여 설치합니다.
requirements.txt를 이용하면 패키지를 하나하나 설치하는 수고스러움을 덜 수 있습니다.
1. 복제하고 싶은 python환경에서, 아래의 명령어를 입력하여 설치한 패키지들을 requirements.txt에 list-up 합니다.
pip freeze > requirements.txt
2. requirements.txt
ltgraph==0.17.3
appdirs==1.4.4
astor==0.8.1
backcall==0.2.0
colorlover==0.3.0
cufflinks==0.17.3
cycler==0.11.0
Cython==0.29.32
debugpy==1.6.3
decorator==5.1.1
entrypoints==0.4
evdev==1.6.0
fonttools==4.37.4
imageio==2.24.0
importlib-metadata==5.1.0
ipykernel==6.16.0
ipython==7.34.0
ipywidgets==8.0.2
jedi==0.18.1
jupyter-core==4.11.1
jupyter_client==7.3.5
jupyterlab-widgets==3.0.3
kaleido==0.2.1
kiwisolver==1.4.4
matplotlib==3.5.3
matplotlib-inline==0.1.6
nest-asyncio==1.5.6
networkx==2.6.3
numpy==1.24.1
orjson==3.8.3
packaging==21.3
pandas==1.1.5
pandasgui==0.2.13
parso==0.8.3
pexpect==4.8.0
pickleshare==0.7.5
Pillow==9.2.0
plotly==5.10.0
prompt-toolkit==3.0.31
psutil==5.9.2
ptyprocess==0.7.0
pyarrow==10.0.1
Pygments==2.13.0
pyinstaller==5.6.2
pyinstaller-hooks-contrib==2022.13
pynput==1.7.6
PyOpenGL==3.1.6
pyparsing==3.0.9
PyQt5==5.15.7
PyQt5-Qt5==5.15.2
PyQt5-sip==12.11.0
PyQtWebEngine==5.15.6
PyQtWebEngine-Qt5==5.15.2
PySide2==5.15.2.1
python-dateutil==2.8.2
python-qt==0.50
python-xlib==0.32
pytz==2022.4
PyWavelets==1.3.0
pyzmq==24.0.1
qtstylish==0.1.5
3. venv에 requirements.txt을 이용한 패키지 설치 합니다.
/Users/py-calmer/project/venv/bin/python3 -m pip install -r requirements.txt