2023. 12. 21. 17:09ㆍPython
Python은 보통 프로젝트별로 가상환경을 생성하여 사용한다.
각 프로젝트별로 환경을 분리하면 다른 프로젝트와 충돌을 방지하여 유지관리적인 측면에서 활용도가 높다.
이에 따라 최초 Python을 설치한 이후 가상환경설정 방법 및 오류에 대해 알아보자.
Python 가상환경(Vitual environment) 설정
1. 사전준비
Python, pip 및 venu 설치
당연하게도 Python은 설치가 되어있어야 하며 설치가 되어있지 않은 경우 아래링크를 통해 설치를 진행한다.
WSL2(Ubuntu) 에서 Python 3.12 설치
WSL2 버전은 Ubuntu 22.04로 현재 기준 최신버전(Python 3.12)을 기준으로 설명하도록 하며 실제로 발생하는 여러 문제점도 함께 처리하도록 한다. 설치 버전 확인 보통 Ubuntu 22.04 설치 시 기본적으로 Pyth
lovelettee01.tistory.com
- pip 설치
pip를 사용하면 Python 표준 라이브러리에 포함되지 않은 추가 패키지를 설치하고 관리할 수 있습니다.
sudo apt install python3-pip
- venu 설치
sudo apt install python3-venv
2. 가상환경 생성
python3 -m venv .venv #가상환경설정
해당 명령어를 실행 시. venu라는 폴더에 가상환경이 생성되며 정상적으로 생성 시 아래와 같은 구조의 폴더가 생성된다.

가상환경 활성화
source .venu/bin/activate #가상환경 활성화
가상환경 활성화가 되면 각 Shell별로 서로 다른 형태로 표시된다.
- oh-my-zsh 가상환경 활성화

- bash 가상환경 활성화

가상환경 비활성화
deactivate 명령어를 통해 활성화된 가상환경을 비활성화할 수 있다.
- oh-my-zsh 가상환경 비활성화

- bash 가상환경 활성화

가상 환경 설정 오류
1. pip 설치 오류
아래와 같이 단순 pip list를 호출하여도 에러가 나는 경우
보통 여러 버전의 Python을 설치할 경우 버전 충돌로 인해서 발생한다.
pip list
Traceback (most recent call last):
.....
ImportError: cannot import name 'html5lib' from 'pip._vendor' (/usr/lib/python3/dist-packages/pip/_vendor/__init__.py)
현재 설치된 python 및 pip 버전을 확인해 보면 3.11로 정상적으로 등록된 듯 보인다.
하지만 pip 버전이 20.0.2이다(이 부분은 각자의 상황에 따라 다를 수 있다)

pip 다운로드
# {python3.11} 부분은 자신의 실행버전을 입력한다.
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11

WRANING은 Path가 설정이 되어있지 않다는 내용으로 최초 Path설정이 되지 않은 상태일 때 나오는 문구

위에서 보듯이 pip를 다운받더라고 기존 pip정보는 변경이 되지 않는다.
Warning에서 나왔듯이 Path를 설정하여 우선순위를 변경하여 주어도 되고 기존 설치된 PIP를 제거하여도 된다.
- PATH 지정을 통한 우선순위 변경

- (Optional) 기존 설치된 PIP삭제
sudo apt remove --purge python3-pip
위 방식으로 적용할 경우 이제는 pip가 설정한 버전으로 정상 동작하는것을 확인 가능하다.

2. pip Package Library오류
보통 Python 설치 시 호환되는 pip가 설치되는 경우 문제가 발생하지 않을 수 있지만 기존 설치된 버전 이외에 다른 버전을 설치할 경우 기존 버전과의 호환성 문제로 pip 실행 시 오류가 발생할 수 있기 때문에 이에 따른 해결방법을 알아보자.
- python3-apt 재설치
아래는 python3-apt가 호환되지 않기 때문에 apt package 오류 발생
Traceback (most recent call last):
File "/usr/lib/command-not-found", line 28, in <module>
from CommandNotFound import CommandNotFound
File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
from CommandNotFound.db.db import SqliteDatabase
File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
import apt_pkg ModuleNotFoundError: No module named 'apt_pkg'
python3-apt을 삭제 후 호환되는 버전으로 재설치해 준다.
sudo apt remove --purge python3-apt
sudo apt autoclean
sudo apt install python3-apt
- distutils 오류
아래와 같은 오류 또는 No module named 'distutils.util'과 같은 오류 발생 시 distutils 모듈을 설치해 준다.
ImportError: cannot import name 'sysconfig' from 'distutils'
(/usr/lib/python3.12/distutils/__init__.py)
sudo apt install python3-distutils
distutils 설치 이후에도 동일한 오류가 발생할 경우 각 버전에 맞는 disutils를 설치해 주도록 한다.
※ python 3.12 버전 설치 시
sudo apt install python3.12-distutils
3. venv 사용 시 pip-env 오류 수정
python -m venv .venv 명령어를 통해 새로운 가상환경을 생성할 때 다음가 같은 오류 가 발생 할 수 있다.
Error: Command '['/WEB/Works/VSWorks/python-first/.venv/bin/python3', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
이것 역시도 설치된 python 버전과 호환되지 않는 venv모듈이 설치되어 있기 때문에 발생한다.
해당 버전으로 새로 설치를 해줄 경우 문제없이 동작한다.
sudo apt install python3.12-venv'Python' 카테고리의 다른 글
| Python 가상환경 자동 활성/비활성 (feat. zsh) (0) | 2024.02.23 |
|---|---|
| WSL2(Ubuntu) 에서 Python 3.12 설치 (1) | 2023.12.21 |