pip의 VersionConflict를 수정하여 라이브러리 설치 실행을 성공적으로 수행

pip의 VersionConflict를 수정하여 라이브러리 설치 실행을 성공적으로 수행

2022-10-06 last update

6 minutes reading Python3 파이썬 pip Pipenv virtualenv


"왜 Python의 패키지 관리 곧 죽어버리는 거야?"

환경


  • 이번에 일어난 환경은 이하, 이미 Pipfile은 작성 완료
  • $ python -V
    Python 3.7.6
    

    일어난 일


  • pip install 또는 pipenv install 당 라이브러리 설치가 더 이상 작동하지 않습니다
  • pip 버전에서도 다음과 같이 오류가 발생했습니다
  • $ pip -V
    Traceback (most recent call last):
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 583, in _build_master
        ws.require(__requires__)
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 900, in require
        needed = self.resolve(parse_requirements(requirements))
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 791, in resolve
        raise VersionConflict(dist, req).with_context(dependent_req)
    pkg_resources.VersionConflict: (pip 20.1 (/usr/local/lib/python3.7/site-packages), Requirement.parse('pip==19.3.1'))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/opt/python/libexec/bin/pip", line 6, in <module>
        from pkg_resources import load_entry_point
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3251, in <module>
        @_call_aside
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3235, in _call_aside
        f(*args, **kwargs)
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 3264, in _initialize_master_working_set
        working_set = WorkingSet._build_master()
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 585, in _build_master
        return cls._build_from_requirements(__requires__)
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 598, in _build_from_requirements
        dists = ws.resolve(reqs, Environment())
      File "/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py", line 786, in resolve
        raise DistributionNotFound(req, requirers)
    pkg_resources.DistributionNotFound: The 'pip==19.3.1' distribution was not found and is required by the application
    

    원인


  • 이것 같은 pip 버전이 충돌을 일으키는 것 같습니다
  • 요청한 pip는 19.3.1이고 실행중인 pip는 20.1이므로
  • 어딘가에서 업그레이 드한 설 (Warning에서 ...)

  • pkg_resources.VersionConflict: (pip 20.1 (/usr/local/lib/python3.7/site-packages), Requirement.parse('pip==19.3.1'))
    

    대책


  • 요청한 pip 버전 (이번에는 19.3.1) 설치
  • 설치 방법은 PyPA 공식 문서에 설명되어 있습니다
  • .
  • 로컬 환경의 Python과 pip이 끈적하지 않은 경우에도이 방법은 유용합니다
  • # python get-pip.pyを実行するためのファイルをcurlで取得
    $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 1824k  100 1824k    0     0  1650k      0  0:00:01  0:00:01 --:--:-- 1650k
    
    # 引数でpipのバージョンを指定してpipをインストールする
    $ python get-pip.py pip==19.3.1
    Looking in indexes: https://pypi.python.org/simple/
    Collecting pip==19.3.1
      Downloading pip-19.3.1-py2.py3-none-any.whl (1.4 MB)
         |████████████████████████████████| 1.4 MB 553 kB/s
    Installing collected packages: pip
      Attempting uninstall: pip
        Found existing installation: pip 20.1
        Uninstalling pip-20.1:
          Successfully uninstalled pip-20.1
    Successfully installed pip-19.3.1
    

    결과


  • 지정된 버전의 pip이 로컬 Python과 연결되어 다운로드되었습니다
  • 나중에 pip install 되세요 pipenv install 되세요
  • $ pip -V                                                                                                                                       
    pip 19.3.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)