[Python] 파이썬 설치목록 관리하기(requirements.txt)

    파이썬은 아직 언어가 완벽하지 않은 프로그램 언어이다. 그러다보니 버전업이 될때마다 개발에 대해서 호환이 잘 안되는 경우가 많고, 이는 파이썬 자체뿐만 아니라 라이브러리들도 그러하다. 

     

    텐서플로우(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>

     

     

    댓글

    Designed by JB FACTORY