-
[Project] 파이썬 및 가상 환경 관리 - Pyenv + Poetry프로젝트/Movie-Ticketing 2024. 1. 16. 01:15728x90
Python을 사용할 때 주의해야 할 사항
Python 환경을 설치하는 데는 apt 또는 brew를, 패키지를 설치하는 데는 pip를 사용할 수 있다. 파이썬 환경과 패키지의 유연성 덕분에 사용자는 다양한 방법으로 파이썬을 사용할 수 있다.
때로는 예상치 못한 Python 버전 환경이나 패키지 버전으로 인해 개발 환경이 엉망이 될 수도 있다. 따라서 올바른 Python 환경, 패키지 및 종속성 관리 도구를 갖추는 것이 중요하다.
Pyenv
여러 버전의 Python 사이를 쉽게 전환할 수 있는 환경 관리 도구다. 예를 들어 Pyenv를 통해 Python3.9.13과 Python3.10.7을 생성할 수 있다.
Poetry
패키지 및 의존성 관리 도구다.
하나의 라이브러리를 환경에 추가할 때 모든 하위 라이브러리의 종속성을 검사한다는 특징을 가진다.
Poetry는 환경 관리를 처리하지 않는다. 공식 웹사이트를 보면 Pyenv와 잘 통합된다는 것을 알 수 있다.
https://python-poetry.org/docs/managing-environments/
Managing environments | Documentation | Poetry - Python dependency management and packaging made easy
If you use a tool like pyenv to manage different Python versions, you can set the experimental virtualenvs.prefer-active-python option to true. Poetry will then try to find the current python of your shell. For instance, if your project requires a newer Py
python-poetry.org
Conda 대신 Pyenv + Poetry를 사용하는가?
Conda는 환경관리와, 패키지 관리를 함께 할 수 있는 강력한 도구다. 하지만 프로덕션 개발에서 사용할 때는 몇 가지 우려되는 점이 있다.
첫째, Conda는 데이터 사이언티스트에게 좋은 새로운 Python 환경을 위해 불필요한 라이브러리를 설치한다. Panda, Numpy, Jupyter 등..
둘째, 설치 중에 불필요한 패키지가 추가된다. 사용자가 numpy를 설치하려고 하면 openssl 라이브러리가 추가된다.
cf) OpenSSL이 특별히 NumPy 자체의 종속 요소라기 보다는 Conda의 운영, 특히 패키지 다운로드를 위한 보안 연결을 설정하는 데 중요한 구성 요소다.
https://github.com/conda/conda/issues/11982
Conda SSL Error: OpenSSL appears to be unavailable on this machine. OpenSSL is required to download and install packages. · Iss
Checklist I added a descriptive title I searched open reports and couldn't find a duplicate What happened? I recently updated Anaconda Navigator to version 22.3.0 (using Anaconda Navigator's built-...
github.com
셋째, conda list을 사용할 때 일부 패키지가 설치되지 않을 수 있다.
넷째, 작업을 수행하다 보면 때때로 라이브러리 종속성 문제에 직면하게 된다. 이는 유지보수 및 개발에 영향을 미친다.
Poetry를 사용하면 파이썬 환경에 패키지를 추가하려고 하면 Poetry가 자동으로 종속성 문제를 확인하고, pyproject.toml에 패키지를 추가하고, poetry.lock 파일에 패키지를 잠근다.
다른 환경에서 Python 코드를 실행할 때 poetry.lock 파일을 사용하면 모든 패키지를 동일하게 유지할 수 있다.
결론
파이썬 버전 : 3.11 - Pyenv로 환경 관리
패키지 환경 : Poetry로 관리
728x90'프로젝트 > Movie-Ticketing' 카테고리의 다른 글
[Project] 회원가입 - 로그인 (0) 2024.01.24 [Projects] 개발 워크 플로우 (0) 2024.01.17 [Project] 요구사항 + 초기 API 스펙 (0) 2024.01.11 [Project] 아키텍처 결정 (0) 2024.01.09 [Project] 일정 수립 (0) 2024.01.09