콘텐츠로 건너뛰기

python3 venv 로 가상화하기

1. 사전 준비 (패키지 설치)

패키지 리스트 업데이# 패키지 리스트 업데이트
$ sudo apt update

# python3-venv 패키지 설치
$ sudo apt install python3-venv

2. 가상환경 생성 (Create)

# 프로젝트 폴더 생성 및 이동
$ mkdir my_project
$ cd my_project

# 가상환경 생성 (폴더명: .venv)
$ python3 -m venv .venv
# venv 모듈을 실행, 격리된 가상환경을 생성, 그리고 그 가상환경의 이름은 .venv로 하겠다는 선언임.
# 물론 폴더의 이름은 다르게 지어도 됨.

3. 가상환경 활성화 (Activate)

# 가상환경 활성화
robot@---$ source .venv/bin/activate
(.venv) ---$ # 괄호안에 가상화 이름이 나타난다.

4. 검증 및 패키지 추가

# 파이썬 경로 확인 (시스템 경로가 아닌 .venv 내부여야 함)
(.venv) ---$ which python3
# 출력 예시: /home/gk/my_project/.venv/bin/python

# pip 업그레이드 (이제 업글 가능)
pip install --upgrade pip

# 필요한 패키지 설치 예시 (이제 pip를 가지고 자유롭게 외부 패키지를 가져와서 설치할 수 있다.)
$ pip install flask beautifulsoup

# 이제는 python을 입력해도 python3가 불려져 동작한다.
$ python
Python 3.12.3 (main, Nov  6 2025, 13:44:16) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
Ctrl click to launch VS Code Native REPL
>>> 

5. 가상환경 비활성화 (Deactivate)

$ deactivate

#추가로, 더이상 가상화가 필요없게 되면 그냥 .venv를 지우면 된다.

6. 가상환경 비활성화 (Deactivate)

# 현재 환경의 패키지 목록 저장
$ pip freeze > requirements.txt

# 다른 환경에서 동일한 패키지 설치
$ pip install -r requirements.txt

7. 복사된 가상환경을 다시 만들기

#가상화 생성
robot@kimsh:~/work/Robot-AI/Python/python3$ python3 -m venv .venv
python3 -m venv .venv

# requirements.txt 파일이 있는지 확인한다.
robot@kimsh:~/work/Robot-AI/Python/python3$ ls
module module1 requirements.org.txt requirements.txt robot1 src
# requirements.txt를 만들어 왔다.

# 가상환경 시작
robot@kimsh:~/work/Robot-AI/Python/python3$ source ./.venv/bin/activate

# pip 업글 시작
(.venv) robot@kimsh:~/work/Robot-AI/Python/python3$ pip install --upgrade pip
Requirement already satisfied: pip in ./.venv/lib/python3.12/site-packages (24.0)
Collecting pip
Downloading pip-25.3-py3-none-any.whl.metadata (4.7 kB)
Downloading pip-25.3-py3-none-any.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 11.1 MB/s eta 0:00:00
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 24.0
Uninstalling pip-24.0:
Successfully uninstalled pip-24.0
Successfully installed pip-25.3
# pip 업글 완료

# 기존에 만들었던 가상 환경을 그대로 복사해서 생성
(.venv) robot@kimsh:~/work/Robot-AI/Python/python3$ pip install -r ./requirements.txt
Collecting beautifulsoup4==4.14.3 (from -r ./requirements.txt (line 1))
Using cached beautifulsoup4-4.14.3-py3-none-any.whl.metadata (3.8 kB)
Collecting blinker==1.9.0 (from -r ./requirements.txt (line 2))
Using cached blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)
Collecting click==8.3.1 (from -r ./requirements.txt (line 3))
Using cached click-8.3.1-py3-none-any.whl.metadata (2.6 kB)
Collecting Flask==3.1.2 (from -r ./requirements.txt (line 4))
Using cached flask-3.1.2-py3-none-any.whl.metadata (3.2 kB)
Collecting itsdangerous==2.2.0 (from -r ./requirements.txt (line 5))
Using cached itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
Collecting Jinja2==3.1.6 (from -r ./requirements.txt (line 6))
Using cached jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
Collecting MarkupSafe==3.0.3 (from -r ./requirements.txt (line 7))
Using cached markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
Collecting soupsieve==2.8 (from -r ./requirements.txt (line 8))
Using cached soupsieve-2.8-py3-none-any.whl.metadata (4.6 kB)
Collecting typing_extensions==4.15.0 (from -r ./requirements.txt (line 9))
Using cached typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
Collecting Werkzeug==3.1.4 (from -r ./requirements.txt (line 10))
Using cached werkzeug-3.1.4-py3-none-any.whl.metadata (4.0 kB)
Using cached beautifulsoup4-4.14.3-py3-none-any.whl (107 kB)
Using cached blinker-1.9.0-py3-none-any.whl (8.5 kB)
Using cached click-8.3.1-py3-none-any.whl (108 kB)
Using cached flask-3.1.2-py3-none-any.whl (103 kB)
Using cached itsdangerous-2.2.0-py3-none-any.whl (16 kB)
Using cached jinja2-3.1.6-py3-none-any.whl (134 kB)
Using cached markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
Using cached soupsieve-2.8-py3-none-any.whl (36 kB)
Using cached typing_extensions-4.15.0-py3-none-any.whl (44 kB)
Using cached werkzeug-3.1.4-py3-none-any.whl (224 kB)
Installing collected packages: typing_extensions, soupsieve, MarkupSafe, itsdangerous, click, blinker, Werkzeug, Jinja2, beautifulsoup4, Flask
Successfully installed Flask-3.1.2 Jinja2-3.1.6 MarkupSafe-3.0.3 Werkzeug-3.1.4 beautifulsoup4-4.14.3 blinker-1.9.0 click-8.3.1 itsdangerous-2.2.0 soupsieve-2.8 typing_extensions-4.15.0
# 기존에 만들었던 가상 환경을 그대로 복사해서 생성 완료

(.venv) robot@kimsh:~/work/Robot-AI/Python/python3$

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다