파이썬은 아직 언어가 완벽하지 않은 프로그램 언어이다. 그러다보니 버전업이 될때마다 개발에 대해서 호환이 잘 안되는 경우가 많고, 이는 파이썬 자체뿐만 아니라 라이브러리들도 그러하다.
텐서플로우(Tensorflow)를 하나 예로 들면 이제 나온지 5년도 안된 라이브러리, 프레임워크지만 버전간 호환이 안되는 경우가 허다하고, 이는 곧 특정 버전에 정체 되는 문제를 만든다. 파이썬이란 언어가 개발자보다는 연구원과 같은 비개발자들이 좀 더 선호하는 경향이 많아서 그런지 코딩하는 방식도 워낙 천차만별이고, 서비스에 접목시키기 상당히 어려운 예제들이 많다.
자바 개발자는 gradle이나 maven과 같은 빌드툴로 동일한 환경에서 개발을 매우 쉽게 할 수 있으며, war나 jar안에 패키지로 묶어서 실행하는 할 수 있는데 그래도 이 역할을 해주는 것이 requirements.txt라고 할 수 있다. 정확히 requirements.txt 라는 것은 최종적으로 나온 결과물이고 생성해주는 역할은 pip지만 많은 사람들이 requirements로 말을 하며 마치 Rest API로 만들어 달라는 요청을 JSON으로 만들러달라라는 것과 유사하다.
설치 목록(requirements.txt) 생성하기
보통 파이썬 개발자는 어떤 프로젝트를 하기 전에 가상환경을 만든다. 특정 프로젝트만을 위한 이 가상환경은 환경별로 영역(정확히 말해서 폴더)이 분리되어 있고, 그 폴더에 패키지가 설치되는 방식이다.
원하는 가상환경으로 전환
(base) C:\Users\Steel>conda activate saibog
(saibog) C:\Users\Steel>
우선 설치 목록을 생성하기에 앞서 원하는 가상환경으로 전환한다.
requirements 생성
pip freeze > requirements.txt
pip freeze라는 것을 사용하면 설치가 가능한 형식으로 목록을 내보낼 수(dump) 있다.
dump된 requirements.txt 파일
absl-py==0.11.0
aiohttp==3.6.3
astunparse==1.6.3
chardet==3.0.4
discord==1.0.1
discord.py==1.5.1
...
tensorboard==2.4.0
tensorboard-plugin-wit==1.7.0
tensorflow==2.3.0
tensorflow-estimator==2.3.0
pip에는 list라고 현재 설치된 라이브러리를 출력하는 기능이 있어서 유사하다 판단할 수 있다.
pip list 명령 실행시
(saibog) C:\Users\Stark>pip list
Package Version
---------------------- -------------------
absl-py 0.11.0
aiohttp 3.6.3
astunparse 1.6.3
async-timeout 3.0.1
attrs 20.3.0
cachetools 4.2.0
certifi 2020.12.5
chardet 3.0.4
discord 1.0.1
discord.py 1.5.1
gast 0.3.3
google-auth 1.24.0
google-auth-oauthlib 0.4.2
google-pasta 0.2.0
grpcio 1.34.0
h5py 2.10.0
idna 2.10
그러나 pip list는 단지 리스트를 보는 것일 뿐, requirements는 그대로 설치를 할 수 있게 포맷도 맞춰진 상태이다.
설치목록으로 환경 생성하기
이제 requirements.txt로 동일한 환경을 구성해보기로 한다. 이를 위해 다른 컴퓨터에 저장된 requirements를 현재 컴퓨터에 설치를 해보도록 한다.
pip install -r requirements.txt
기존에 사용하는 pip install에 -r을 붙이면 requirements를 참고하여 설치하게 된다.
(tts) C:\project\tts>pip install -r requirements.txt
...
Collecting py==1.10.0
Downloading py-1.10.0-py2.py3-none-any.whl (97 kB)
|████████████████████████████████| 97 kB 1.1 MB/s
Collecting pytest==6.2.1
Downloading pytest-6.2.1-py3-none-any.whl (279 kB)
|████████████████████████████████| 279 kB 6.8 MB/s
Collecting toml==0.10.2
Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Building wheels for collected packages: TensorFlowTTS
Building wheel for TensorFlowTTS (setup.py) ... done
Created wheel for TensorFlowTTS: filename=TensorFlowTTS-0.0-py3-none-any.whl size=113296 sha256=426ceea86a813c896f95e794335ddd16f91d36029f38c8a4bd2b75ea1d067bc5
Stored in directory: C:\Users\STEELS~1\AppData\Local\Temp\pip-ephem-wheel-cache-p17zu3g8\wheels\a9\ea\e0\40ae1a57d4fef8d8c2af40e8fa30c27830d7c0e56271453ac8
Successfully built TensorFlowTTS
Installing collected packages: toml, py, pluggy, iniconfig, atomicwrites, TensorFlowTTS, pytest
Attempting uninstall: TensorFlowTTS
Found existing installation: TensorFlowTTS 0.0
Uninstalling TensorFlowTTS-0.0:
Successfully uninstalled TensorFlowTTS-0.0
Successfully installed TensorFlowTTS-0.0 atomicwrites-1.4.0 iniconfig-1.1.1 pluggy-0.13.1 py-1.10.0 pytest-6.2.1 toml-0.10.2
(tts) C:\project\tts>
'프로그램언어 > 파이썬(Python)' 카테고리의 다른 글
콘다(conda) 업데이트 하기 (0) | 2022.03.05 |
---|---|
[Python] 엑셀 데이터 읽기/쓰기 (OpenPyXL) (0) | 2021.01.09 |
[Python] 주피터(Jupyter) 노트북에서 가상환경 연결 (1) | 2020.12.22 |
[Python] pandas로 엑셀(excel) 데이터 읽기 (0) | 2020.12.13 |
파이썬(Python), 아나콘다(Anaconda) 설치하기 (0) | 2020.07.27 |