본문 바로가기
카테고리 없음

python-venv 환경 및 requirements.txt을 이용한 환경 복제 in macOS

by py-calmer 2023. 1. 31.

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