imhamburger 님의 블로그

파이썬(Python) - pyenv virtualenv 이해와 직접 패키지 만들어 배포하기 본문

파이썬(Python)

파이썬(Python) - pyenv virtualenv 이해와 직접 패키지 만들어 배포하기

imhamburger 2024. 7. 18. 19:25

pyenv는 virtualenv 를 제공한다. 이건 가상환경을 만들어 가상환경 안에서 여러 버전의 파이썬을 사용해 볼 수 있다.

가상환경의 주요 특징은 철저히 '격리된 공간'이라는 것이다.

 

가상환경 안에서 어떤 패키지를 설치하였다고 가정해보자.

그 패키지는 가상환경 안에서만 동작할 것이고, 해당 가상환경이 아닌 다른 곳에서 시도하면 오류가 날 것이다. 그리고 pyenv가 여러 버전의 파이썬을 사용하고 관리하는 툴이라는 건 지난 에서 소개하였다. virtualenv에서도 당연히 설치한 특정 버전의 파이썬 버전을 이용할 수 있다.

 

virtualenv를 사용하는 방법은 쉽다.

$ pyenv virtualenv {사용할 파이썬 버전} {가상환경 이름}

위의 코드를 사용한 예시를 보여주자면 pyenv virtualenv 3.11.9 p11

3.11.9 버전의 파이썬을 사용하는 p11이라는 가상환경을 만들겠다~ 라는 의미이다. 

 

만약, 아래와 같은 에러가 뜬다면 virtualenv가 없다는 것이니 별도로 설치를 진행해야 한다.

 

나는 맥을 사용하고 있어 맥 설치방법은 다음과 같다.

$ brew install pyenv-virtualenv

 

 

다시 pyenv virtualenv 3.11.9 p11 을 입력하고 pyenv versions 를 입력하여 잘 만들어졌는지 확인한다.

 

3.11.9/env/p11 가상환경으로 전환하기 위해서는 다음과 같이 입력하면 된다.

$ pyenv global 3.11.9/env/p11

 

전환을 마쳤다면 여기에서 pip에 올라와있는 패키지를 설치하여 간단한 배너를 만들고 나도 패키지에 올려보자!!

나는 누군가 만들어놓은 Pyfiglet 패키지를 설치하였다.

 

코드를 복사하고 반드시 p11 가상환경 안에서 설치해야 한다.(다른 곳에 설치하면 p11 가상환경에서는 설치받은 패키지가 안보일 것이다. 이게 바로 격리된 공간이라는 의미!)

 

정상적으로 설치가 되었다면 아래 명령어로 설치한 패키지 리스트를 확인해보자.

$ pip list

 

그 다음 src/{디렉토리명}/ 아래에 파이썬 파일을 만들고 패키지 사용법을 참고하여 코드를 작성한다. 나는 'Hamburger'가 출력되도록 작성하였다.

def banner():
    f = Figlet(font='slant')
    print(f.renderText('Hamburger'))

 

코드를 다 작성하고 내가 만든 것을 패키지 파일로 만들어주는 명령어를 입력한다.

$ pdm install

 

그리고 나는 Pyfiglet 패키지에 의존하고 있으니까 pyproject.toml 에 해당 패키지를 추가해줘야 잘 작동한다.

추가하는 명령어는 아래 명령어를 입력해주면 된다.

$ pdm add

 

그럼 아래 그림처럼 dependencies에 추가되어 있는 것을 확인할 수 있다.

 

 

그리고나서 또 해줘야할 것이 실행 명령어를 추가해야 한다. 실행명령어를 추가를 해주지않으면 실행할 수 없으니까..

실행명령어 추가에 대한 자세한 내용은 여기 참고! 아래와 같이 실행명령어를 pyproject.toml에 입력한다.

 

 

이제 배포할 준비가 끝났다.

하지만 배포하기 전에 꼭 테스트를 해봐야 한다. 아래 명령어를 통해 내가 방금 만든 패키지를 설치하자.

$ pip install . #만든 패키지를 설치

 

 

그런 다음 실행명령어를 입력하면?

 

짜-잔! 이렇게 잘 나올 것이다.

 

이제 테스트를 마쳤으니 실제로 pypi에 배포를 하자.

배포는 간단하다. pdm publish를 입력해주면 끝! pypi 사이트에 접속하여 내 계정에서 프로젝트를 확인하면 된다.

$ pdm publish

 

만약 같은 버전으로 배포할 경우 다음과 같은 에러가 나타난다.

 

이건 이미 같은 버전이 배포되어 있으니 버전을 변경하여 배포하라는 의미이다. 그러니 pyproject.toml에서 버전을 바꿔줘야 한다.