IT학습/기타

[가상환경] venv 가상환경

바틀비 2024. 1. 4. 12:07

가상환경의 생성, 패키지 설치, 삭제

이전글을 참고한다. 터미널 명령어를 다시 정리하면 다음과 같다

더보기
$ pip install virtualenv

$ virtualenv venv #venv 대신 다른 이름으로 가상환경 설정 가능

$ source venv/Scripts/activate #경로를 입력할 때는 Tab키 사용
(venv)

$ pip install numpy
Installing collected packages: numpy
Successfully installed numpy-1.26.3
(venv)

$ python main.py
1.26.3
가상환경 학습용 예시 코드입니다.
(venv)

$ source venv/Scripts/activate
(venv) #venv 가상환경활성화 상태 

$ deactivate
#비활성화 되어서 아무것도 안 뜸

$ rm -rf venv #가상환경 삭제. 동시에 venv 폴더로 삭제된다.

연습용 코드

import numpy as np

def main():
	print(np.__version__)
	print("가상환경 학습용 예시 코드입니다.")

if __name__ == "__main__":
	main()

https://bartlebytypewriter.tistory.com/8

 

[가상환경] VSCODE에 가상환경 연결하기, venv 가상환경

VSCODE에서 가상환경 연결하기 Ctrl + Shift + P 키를 눌러서 Show all commands 를 실행한다. 그리고 python select interpreter 를 검색한다. 그중 연결하고자 하는 가상환경을 선택한다. 여기서는 flask를 선택하

bartlebytypewriter.tistory.com

 

가상환경 패키지 설치, 관리

텍스트 파일로 설치할 패키지의 목록을 작성한다. 이때 항상 문서를 저장해야 이후 bash에서 명령어가 실행된다.

다음 명령어를 실행하여 패키지를 설치한다.

$ pip install -r requirements.txt

이후 freeze 명령어를 통해서 현재 가상환경에 설치된 패키지 리스트를 확인할 수 있다.

$ pip freeze

contourpy==1.2.0
cycler==0.12.1
fonttools==4.47.0
kiwisolver==1.4.5
matplotlib==3.8.2
numpy==1.26.3
packaging==23.2
pandas==2.1.4
pillow==10.2.0
pyparsing==3.1.1
python-dateutil==2.8.2
pytz==2023.3.post1
seaborn==0.13.1
six==1.16.0
tzdata==2023.4
(venv)

그리고 다음 명령어를 통해서 버전 정보가 담긴 패키지 목록을 txt 파일로 저장할 수 있다.
아래의 이미지를 통해서 패키지 목록이 담긴 req.txt 파일이 생성되었음을 확인할 수 있다.

pip freeze > req.txt

이번에는 requirements.txt 에 scipy, jupyterlab, jupyter 패키지를 추가하고 bash 터미널에 $ pip install -r requirements.txt 을 다시 실행해 설치한다. freeze를 통해서 패키지가 정상적으로 추가 설치되었음을 확인할 수 있다.

더보기
$ pip freeze
anyio==4.2.0
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==2.4.1
async-lru==2.0.4
attrs==23.2.0
Babel==2.14.0
beautifulsoup4==4.12.2
bleach==6.1.0
certifi==2023.11.17
cffi==1.16.0
charset-normalizer==3.3.2
colorama==0.4.6
comm==0.2.1
contourpy==1.2.0
cycler==0.12.1
debugpy==1.8.0
decorator==5.1.1
defusedxml==0.7.1
executing==2.0.1
fastjsonschema==2.19.1
fonttools==4.47.0
fqdn==1.5.1
idna==3.6
ipykernel==6.28.0
ipython==8.19.0
ipywidgets==8.1.1
isoduration==20.11.0
jedi==0.19.1
Jinja2==3.1.2
json5==0.9.14
jsonpointer==2.4
jsonschema==4.20.0
jsonschema-specifications==2023.12.1
jupyter==1.0.0
jupyter-console==6.6.3
jupyter-events==0.9.0
jupyter-lsp==2.2.1
jupyter_client==8.6.0
jupyter_core==5.7.0
jupyter_server==2.12.2
jupyter_server_terminals==0.5.1
jupyterlab==4.0.10
jupyterlab-widgets==3.0.9
jupyterlab_pygments==0.3.0
jupyterlab_server==2.25.2
kiwisolver==1.4.5
MarkupSafe==2.1.3
matplotlib==3.8.2
matplotlib-inline==0.1.6
mistune==3.0.2
nbclient==0.9.0
nbconvert==7.14.0
nbformat==5.9.2
nest-asyncio==1.5.8
notebook==7.0.6
notebook_shim==0.2.3
numpy==1.26.3
overrides==7.4.0
packaging==23.2
pandas==2.1.4
pandocfilters==1.5.0
parso==0.8.3
pillow==10.2.0
platformdirs==4.1.0
prometheus-client==0.19.0
prompt-toolkit==3.0.43
psutil==5.9.7
pure-eval==0.2.2
pycparser==2.21
Pygments==2.17.2
pyparsing==3.1.1
python-dateutil==2.8.2
python-json-logger==2.0.7
pytz==2023.3.post1
pywin32==306
pywinpty==2.0.12
PyYAML==6.0.1
pyzmq==25.1.2
qtconsole==5.5.1
QtPy==2.4.1
referencing==0.32.0
requests==2.31.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.16.2
scipy==1.11.4
seaborn==0.13.1
Send2Trash==1.8.2
six==1.16.0
sniffio==1.3.0
soupsieve==2.5
stack-data==0.6.3
terminado==0.18.0
tinycss2==1.2.1
tornado==6.4
traitlets==5.14.1
types-python-dateutil==2.8.19.14
tzdata==2023.4
uri-template==1.3.0
urllib3==2.1.0
wcwidth==0.2.12
webcolors==1.13
webencodings==0.5.1
websocket-client==1.7.0
widgetsnbextension==4.0.9
(venv)

이때 pip freeze > req.txt 를 실행하면 새로운 목록을 기존 패키지 목록에 덮어씌울 수 있다.
이번에는 requirements.txt 에 덮어씌워보자.

pip freeze > requirements.txt

기존 텍스트 파일에 정상적으로 목록이 작성되었음을 확인할 수 있다.

위의 과정을 통해 향후 다른 프로젝트를 하거나, 협업을 진행할 때 패지키 목록이 담긴 텍스트 파일을 전달하여 프로젝트의 패키지를 한꺼번에 설치, 관리할 수 있다.