파이썬 프로그램을 개발할 때, 다양한 라이브러리를 사용합니다.
문제는 라이브러리 끼리 서로 버전 의존성이 있어서 특정 버전이 필요한데, 다른 파이썬 프로젝트를 실행하려면 또 다른 버전을 설치해야한다는 점입니다.
venv로 가상 환경을 만들어, 특정 프로젝트에 필요한 버전을 설치하여 실행할 수 있다면 다른 프로젝트에 영향을 주지 않을 수 있습니다. 이 글에서는 venv로 가상 환경을 세팅하는 방법을 소개합니다.
1. venv로 가상 환경 만들기
다음과 같이 python -m venv [name]
명령어를 입력하면 가상 환경이 생성되며, 관련 파일들은 myvenv
라는 폴더 아래에 생성됩니다.
$ python -m venv myvenv
$ ls
myvenv
2. 가상환경 활성화
터미널에서 현재 쉘이 가상 환경에서 동작하도록 하려면, 아래와 같이 활성화를 시킵니다.
활성화가 되면 쉘의 왼쪽에 (myvenv)
라고 이름이 보여집니다. 이제 현재 쉘은 가상환경에서 동작한다고 보시면 됩니다.
$ . myvenv/bin/activate
(myvenv) $ python --version
Python 3.8.10
가상환경에서 파이썬 버전을 확인해볼 수 있고
(myvenv) $ python --version
Python 3.8.10
파이썬의 설치 위치를 확인해볼 수도 있습니다. 파이썬은 가상환경 폴더 안에 위치해 있습니다.
(myvenv) $ which python
/home/js/test/myvenv/bin/python
pip로 라이브러리를 설치할 수 있는데, 모두 가상환경에 설치되고 가상환경 밖의 시스템에 설치되지 않습니다.
(myvenv) $ pip install requests urllib3
Collecting requests
Downloading requests-2.28.1-py3-none-any.whl (62 kB)
|████████████████████████████████| 62 kB 1.7 MB/s
...
pip list
명령어로 설치된 모듈을 확인해보면, 매우 적은 모듈만 설치된 것을 볼 수 있습니다.
(myvenv) $ pip list
Package Version
------------------ ---------
certifi 2022.9.24
charset-normalizer 2.1.1
idna 3.4
pip 20.0.2
pkg-resources 0.0.0
requests 2.28.1
setuptools 44.0.0
urllib3 1.26.12
pip로 필요한 모듈을 모두 설치하였다면, 이 환경에서 파이썬 프로그램을 개발하면 됩니다.
3. 가상환경 비활성화
deactivate
명령어를 입력하면 가상환경이 종료되며, (myvenv)
가 터미널에서 사라지며 시스템 환경으로 이동합니다.
(myvenv) $ deactivate
파이썬의 설치 위치를 보면, 시스템에 설치된 파이썬 경로입니다.
$ which python
/usr/bin/python
pip list
로 설치 모듈 목록을 보면, 매우 많은 모듈이 설치된 것을 볼 수 있습니다.
$ pip list
Package Version
------------------------ --------------------
aiodns 3.0.0
aiohttp 3.7.4.post0
apiclient 1.0.4
apturl 0.5.2
async-generator 1.10
async-timeout 3.0.1
attrs 21.2.0
autokey 0.95.10
backports.zoneinfo 0.2.1
bcrypt 3.1.7
beautifulsoup4 4.10.0
blinker 1.4
Brlapi 0.7.0
bs4 0.0.1
cachetools 4.1.1
ccxt 1.55.60
certifi 2019.11.28
cffi 1.14.6
chardet 3.0.4
charset-normalizer 2.0.12
Click 7.0
colorama 0.4.3
command-not-found 0.3
courlan 0.6.0
....
4. 가상환경 삭제
rm 명령어 등으로, 가상환경을 만들 때 생성된 폴더를 삭제해주면 됩니다.
$ rm -rf myvenv
Related Posts
- Python - Yaml 파일 파싱하는 방법
- Python - 파일 내용 삭제
- Python - for문에서 리스트 순회 중 요소 값 제거
- Python - 두 리스트에서 공통 요소 값 찾기
- Python - 문자열 앞(뒤)에 0으로 채우기
- Python - 공백으로 문자열 분리
- Python - 중첩 리스트 평탄화(1차원 리스트 변환)
- Python - 16진수 문자열을 Int로 변환
- Python - 두 날짜, 시간 비교
- Python f-string으로 변수 이름, 값 쉽게 출력 (변수명 = )
- Python - nonlocal과 global 사용 방법
- Python 바다코끼리 연산자 := 알아보기
- Python - pip와 requirements.txt로 패키지 관리
- Python - 딕셔너리 보기 좋게 출력 (pprint)
- Python - Requests 사용 방법 (GET/POST/PUT/PATCH/DELETE)
- Python - 온라인 컴파일러 사이트 추천
- Python - os.walk()를 사용하여 디렉토리, 파일 탐색
- Python - 문자열 비교 방법
- Python - Text 파일 읽고 쓰는 방법 (read, write, append)
- Python - 리스트에서 첫번째, 마지막 요소 가져오는 방법
- Python - 두개의 리스트 하나로 합치기
- Python - 리스트의 마지막 요소 제거
- Python - 리스트의 첫번째 요소 제거
- Python 소수점 버림, 4가지 방법
- Python 코드 안에서 버전 확인 방법
- Python 소수점 반올림, round() 예제
- Python - 리스트 평균 구하기, 3가지 방법
- Python - bytes를 String으로 변환하는 방법
- Python - String을 bytes로 변환하는 방법
- Python 버전 확인 방법 (터미널, cmd 명령어)
- Python - 람다(Lambda) 함수 사용 방법
- Python - dict 정렬 (Key, Value로 sorting)
- Python - range() 사용 방법 및 예제
- Python - 리스트를 문자열로 변환
- Python - 문자를 숫자로 변환 (String to Integer, Float)