본문 바로가기

2. Development/메타휴먼 프로젝트

번외1. 파이썬 프로젝트 환경 (Pyenv, Pipenv)

해당 프로젝트에 대한 구체적인 구조에 대해서는 작성하지는 않지만,

프로젝트를 진행함에 편의를 제공하는 환경을 경험적으로 작성해보려고 한다.

 

인공지능 프로젝트를 진행함에 있어서 다양한 오픈소스를 테스트 해본다거나 라이브러리에 대한 실험을 해야했다.

그런데 여기서 파이썬 버전을 옮겨가면서 테스트 해야할 필요도 있고, 각기 다른 환경을 설치해야할 소요도 많았다.

그래서 개발환경을 이전에 뒤집어 엎었는데 그 경험이 나쁘지 않아서 공유하려고 한다.

 

 

사용경험이 매우 좋으며 다른 사람에게도 추천하고 싶은 구성으로 작성했다.

Pyenv

파이썬 버전 관리자다. 여러가지의 파이썬 버전을 스위칭 해서 사용할 수 있다는 점이 매우 편리한 점이다.

세팅만 잘 해놓는다면 사용하는게 매우 편리하게 되어있다. 사용 키워드만 정리했다.

 

사용가능한 파이썬 버전 리스트

pyenv install --list

 

해당 파이썬 버전 다운로드

pyenv install 3.10.13

 

해당 경로에서의 파이썬 실행환경 고정

해당 경로에 .python-version 파일이 생기고 해당 경로 내에서 실행하는 파이썬 파일이 모두 해당 버전으로 구동된다.

pyenv local 3.10.13

 

터미널의 파이썬 실행환경 활성화

pyenv shell 3.10.13

 

Pipenv

파이썬 의존성을 관리하는 패키지이다. 의존성 관리가 조금 골치아픈 requirement.txt를 사용하는 방식이 아닌, pakage & pakage lock 포멧의 의존성 관리 파일을 사용한다는 점에서 매우 편리하다.

 

package와, dev package가 나눠져 있다는 것도 매우 편리하고, lock으로 의존성 설치에 대한 보장도 받을 수 있다는게 매우 좋은 것 같다.

 

의존성 파일 생성

의존성 파일인 Pipfile 파일이 생성된다.

pipenv --python 3.10.13

 

파이썬 환경, env 생성 위치 확인

pipenv --py
pipenv --venv

 

의존성 전체 설치

Pipfile에 정의된 패키지가 설치된다.

pipenv install

 

터미널의 env활성화

pipenv shell

 

의존성 추가 및 설치

의존성 파일들에 패키지가 추가되며 설치된다.

--dev옵션을 붙이면 dev dependency에 추가된다.

pipenv install 패키지명
pipenv install 패키지명 --dev

 

Pyenv & Pipenv 

이 두개의 도구를 같이 쓰면 매우 편리한 부분이 있다.

우선 pipenv가 env를 만들때 pyenv의 python버전을 가져다가 env를 만들어주기 때문에 둘은 상당히 같이 쓰기 편하고, 나름 효율적이라고 느껴졌었다.

 

다른 사람들은 모르겠지만 기존의 패키지를 freeze 하는 방식은 여러가지로 불편한 점이 많고, 실행 환경에 따라 오류도 잦았다.

하지만 Pipenv는 Npm과 매우 유사한 구조를 가지고 있기도 하고 개발의존성이 나누어져 있는것 또한 매우 편리했다.

= 배포와 구동이 매우 편리하다.