<p>pip v10은 Debian/Ubuntu pip3 λͺ…령을 μ€‘λ‹¨ν•©λ‹ˆλ‹€.</p>

에 λ§Œλ“  2018λ…„ 04μ›” 14일  Β·  42μ½”λ©˜νŠΈ  Β·  좜처: pypa/pip

κ΄€λ¦¬μž μ°Έκ³  사항: μ—¬μ „νžˆ 이 λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” μ‚¬λžŒμ€ #5599λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.


  • 핍 버전: 10.0.0
  • 파이썬 버전: 3.5.2
  • 운영 체제: Ubuntu 16.04(νŽΈμ§‘: debian:9.4 μ—μ„œλ„ ν…ŒμŠ€νŠΈλ¨, λ™μΌν•œ 일이 λ°œμƒν•¨)

μ„€λͺ…:

적어도 Ubuntu 16.04μ—μ„œ pip(v10으둜)λ₯Ό μ—…κ·Έλ ˆμ΄λ“œν•˜λ©΄ pip3 λͺ…령이 μž‘λ™μ„ 멈μΆ₯λ‹ˆλ‹€("main을 κ°€μ Έμ˜¬ 수 μ—†μŒ", μ•„λž˜ μ°Έμ‘°). 이것은 μƒˆλ‘œ μ„€μΉ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‚΄κ°€ μ‹€ν–‰ν•œ 것:

(여기에 ν•„μš”ν•˜μ§€ μ•Šλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— λͺ¨λ“  μ μ ˆν•œ 좜λ ₯ 등을 μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬μ „νžˆ μ›ν•˜λŠ” 경우 μ•Œλ €μ£Όμ‹­μ‹œμ˜€!)

me@host$ sudo docker run -it ubuntu:xenial

root@container# apt update && apt install python3-pip

root@container# pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

root@container# pip3 install --upgrade pip
Collecting pip
  Downloading pip-10.0.0-py2.py3-none-any.whl (1.3MB)
    100% |################################| 1.3MB 1.4MB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
Successfully installed pip-10.0.0

root@container# pip --version
pip 10.0.0 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

root@container# pip3 --version
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

root@container# cat /usr/bin/pip3
#!/usr/bin/python3
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

이것이 pip μͺ½μ—μ„œ μˆ˜μ •λ˜μ–΄μ•Ό ν•˜λŠ”μ§€ μ•„λ‹ˆλ©΄ Debian μͺ½μ—μ„œ μˆ˜μ •λ˜μ–΄μ•Ό ν•˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

downstream

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

bashμ—μ„œ λͺ…ν™•ν•œ ν•΄μ‹œλ‘œ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

$ hash -d pip

λ˜λŠ” λŒ€μ‹œ(sh):

$ hash -r pip

λͺ¨λ“  42 λŒ“κΈ€

λ°λΉ„μ•ˆ λ¬Έμ œμž…λ‹ˆλ‹€

μΆ”κ°€ μ°Έκ³  사항 - pipλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œ pipλ₯Ό κ΅μ²΄ν•˜λŠ” 것은 항상 μ‹œμŠ€ν…œ νŒŒμ† ν–‰μœ„λ₯Ό κ°€ν•˜λŠ” μ‚¬λžŒμ΄ 낙진을 μ±…μž„μ§€λŠ” ν–‰μœ„μž…λ‹ˆλ‹€.

Debianμ—μ„œ pip 10의 μ μ ˆν•œ νŒ¨ν‚€μ§€ 볡사본을 κΈ°λ‹€λ €μ•Ό ν•œλ‹€κ³  μ œμ•ˆν•©λ‹ˆλ‹€. @RonnyPfannschmidtκ°€ λ§ν–ˆλ“―μ΄ μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€λ₯Ό μ—…κ·Έλ ˆμ΄λ“œν•˜κΈ° μœ„ν•΄ pipλ₯Ό μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€...

Debian pip3 μŠ€ν¬λ¦½νŠΈκ°€ pip의 λ‚΄λΆ€λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λ―€λ‘œ pip10 ν˜Έν™˜ μˆ˜μ •μ„ μ–»λŠ” 것은 ν™•μ‹€νžˆ κ·Έλ“€μ—κ²Œ 달렀 μžˆμŠ΅λ‹ˆλ‹€.

μΆ”κ°€ μ°Έκ³  사항 - pipλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œ pipλ₯Ό κ΅μ²΄ν•˜λŠ” 것은 항상 μ‹œμŠ€ν…œ νŒŒμ† ν–‰μœ„λ₯Ό κ°€ν•˜λŠ” μ‚¬λžŒμ΄ 낙진을 μ±…μž„μ§€λŠ” ν–‰μœ„μž…λ‹ˆλ‹€.

λ°λΉ„μ•ˆ/μš°λΆ„νˆ¬ μ‚¬λžŒλ“€μ—κ²Œ 벀더가 μ•„λ‹ˆλΌκ³  μ„€λ“ν•˜κ³  νŒ¨ν‚€μ§€μ˜ μ ˆλ°˜μ„ 썩게 내버렀 λ‘μ‹­μ‹œμ˜€. 그러면 μœ νš¨ν•œ μ£Όμž₯이 될 κ²ƒμž…λ‹ˆλ‹€.

virtualenv λ˜λŠ” venvλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œ pip μ„€μΉ˜μ—μ„œ μžμ‹ μ„ 격리할 수 μžˆμŠ΅λ‹ˆλ‹€.

νŒ¨ν‚€μ§€ κ΄€λ¦¬μž 관리 파일(μ—¬κΈ°μ„œλŠ” μ‹œμŠ€ν…œ pip μ„€μΉ˜)을 μˆ˜μ •ν•˜λ©΄ μ•ˆ λ©λ‹ˆλ‹€. -- μ‚¬μš©μžκ°€ μˆ˜μ •ν•˜μ§€ μ•Šμ„ 것이라고 μƒκ°ν•©λ‹ˆλ‹€ -- λ°λΉ„μ•ˆμ—μ„œ μ§€μ›ν•˜μ§€ μ•Šμ„ κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€. 이런 문제λ₯Ό μΌμœΌν‚€κ²Œ λ§ˆλ ¨μž…λ‹ˆλ‹€.

Fedoraμ—μ„œλ„ 같은 λ¬Έμ œμž…λ‹ˆλ‹€.

μ•„λ§ˆλ„ pypi에 깨진 버전을 λ€ν”„ν•˜κ³  λͺ¨λ“  μ‚¬λžŒμ˜ λΉŒλ“œκ°€ ν­λ°œν•˜κ²Œ λ§Œλ“œλŠ” 것보닀 릴리슀 전에 더 λ§Žμ€ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆλŠ” "베타" 채널 λ˜λŠ” μœ μ‚¬ν•œ λ©”μ»€λ‹ˆμ¦˜μ΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

@fake-name 두 가지 사전 λ¦΄λ¦¬μŠ€κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

@fake-name μΆ”κ°€λ‘œ λͺ¨λ“  λ°°ν¬νŒμ—μ„œ μ‚¬μš©μ— λŒ€ν•œ 일반적인 μ œμ•ˆμ€ - virtualenvλ₯Ό μ‚¬μš©ν•˜κ³  μ‹œμŠ€ν…œμ„ νŒŒμ†ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. 그러면 μž‘λ™ν•©λ‹ˆλ‹€.

μž‘λ™ν•˜λŠ” virtualenvsλ₯Ό μ‚¬μš©ν•œ μˆ˜λ™ 및 μžλ™ ν…ŒμŠ€νŠΈκ°€ 많이 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ virtualenvμ—λŠ” μ΅œμ†Œν•œ λ°λΉ„μ•ˆμ—μ„œ λ§Œλ“  pip3 λͺ…령이 μ—†μ–΄μ•Ό ν•©λ‹ˆλ‹€. - κ·Έλž˜μ„œ λ„λŒ€μ²΄ virtualenvsμ—μ„œ κΉ¨λŠ” 것에 λŒ€ν•΄ λ§ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ - 검증에 ν•„μš”ν•œ 데이터λ₯Ό μ œκ³΅ν•˜μ§€ μ•Šκ³  νŒŒμ†μ— λŒ€ν•΄ λΆˆν‰ν•˜λŠ” λŒ€μ‹  μ‹€μ œλ‘œ κ²€μ¦ν•˜κΈ°μ— μΆ©λΆ„ν•œ 데이터λ₯Ό μ œκ³΅ν•˜μ‹­μ‹œμ˜€

pipλŠ” μˆ˜μ‹­ λͺ…μ˜ 직원이 μžˆλŠ” νšŒμ‚¬κ°€ μ•„λ‹ˆλΌ μžμ› λ΄‰μ‚¬μžλ‘œ μš΄μ˜λ©λ‹ˆλ‹€.

~μ‚­μ œν–ˆμŠ΅λ‹ˆλ‹€~. 이것을 https://github.com/pypa/pip/issues/5220 κ³Ό ν˜Όλ™ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 멍청이야.

κ³ λ§ˆμ›Œ, μ‹œμŠ€ν…œ pipλ₯Ό κ΅μ²΄ν•˜λŠ” 것이 λ‚˜μœ μƒκ°μ΄λΌλŠ” 것을 깨닫지 λͺ»ν–ˆμ§€λ§Œ μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ pipκ°€ 이 경우 μ—…κ·Έλ ˆμ΄λ“œμ— λŒ€ν•΄ μž”μ†Œλ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 쒋은 UXκ°€ 될 κ²ƒμž…λ‹ˆλ‹€. 그게 κ°€λŠ₯ν• κΉŒμš”? λ‚˜λŠ” λ§Žμ€ μ‚¬λžŒλ“€(μ €λ₯Ό ν¬ν•¨ν•˜μ—¬)이 "일"이 μš”κ΅¬ν•˜λŠ” 것은 무엇이든 ν•  것이라고 μƒκ°ν•©λ‹ˆλ‹€.

@fake-name 후속 μ‘°μΉ˜μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€ - μ£Όμš” λ¦΄λ¦¬μŠ€κ°€ 닀면적인 영ν–₯을 미치고 κ·Έ 일뢀가 ν•˜λ£¨λ₯Ό 망치렀고 ν•  λ•Œ μ„ΈλΆ€ 사항 λ¬Έμ œκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 것은 λ†€λΌμšΈ μ •λ„λ‘œ μΌλ°˜μ μž…λ‹ˆλ‹€.

이 경우 pipκ°€ μ—…κ·Έλ ˆμ΄λ“œμ— λŒ€ν•΄ μž”μ†Œλ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ 쒋은 UXκ°€ 될 κ²ƒμž…λ‹ˆλ‹€.

배포 λ²€λ”λŠ” ν™•μ‹€νžˆ pipλ₯Ό νŒ¨μΉ˜ν•˜μ—¬ 그듀이 λ§Œλ“œλŠ” λ‹€λ₯Έ νŒ¨μΉ˜μ™€ ν•¨κ»˜ ν•΄λ‹Ή κ²½κ³ λ₯Ό 제거(λ˜λŠ” 더 λ‚˜μ€ μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€μ— λŒ€ν•œ μœ μ‚¬ν•œ κ²€μ‚¬λ‘œ ꡐ체)ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έ pipκ°€ 배포판의 ν˜‘λ ₯ 없이 μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ μ„€μΉ˜μ—μ„œ μ‹€ν–‰λ˜κ³  μžˆμŒμ„ μ–΄λ–»κ²Œ 감지할 수 μžˆλŠ”μ§€ 잘 λͺ¨λ₯΄κ² μ§€λ§Œ κ·Έλ ‡κ²Œ ν•  수 μžˆλŠ” 방법이 μžˆλ‹€λ©΄ κ³ λ €ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. νœ΄λ¦¬μŠ€ν‹±μ„ μ „ν˜€ ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” 것과 같이 μ΄λŸ¬ν•œ νœ΄λ¦¬μŠ€ν‹±μ„ 잘λͺ» μ‚¬μš©ν•¨μœΌλ‘œμ¨ λ§Žμ€ 뢀정적인 ν”Όλ“œλ°±μ„ λ°›μŠ΅λ‹ˆλ‹€...)

항상 pip3보닀 "python3 -m pip" λ˜λŠ” 더 λ‚˜μ€ "/usr/bin/env python3 -m pip"λ₯Ό μ„ ν˜Έν•˜κ³  pip10μ—μ„œ 이 문제λ₯Ό λ°©μ§€ν•˜λŠ” 것이 더 μ•ˆμ „ν•©λ‹ˆλ‹€.

bashμ—μ„œ λͺ…ν™•ν•œ ν•΄μ‹œλ‘œ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

$ hash -d pip

λ˜λŠ” λŒ€μ‹œ(sh):

$ hash -r pip

도컀 이미지λ₯Ό λΉŒλ“œν•˜λŠ” λ™μ•ˆμ—λ„ 이 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

@RonnyPfannschmidt λŠ” "pipλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œ pipλ₯Ό κ΅μ²΄ν•˜λŠ” 것은 항상 μ‹œμŠ€ν…œ νŒŒμ† ν–‰μœ„λ₯Ό κ°€ν•˜λŠ” μ‚¬λžŒμ΄ 낙진에 μ±…μž„μ΄ μžˆλŠ” ν–‰μœ„"라고 λ§ν•©λ‹ˆλ‹€. λ‚˜λŠ” 이것이 λ‚΄κ°€ pip 자체둜 κ·Έλ ‡κ²Œ ν•˜λ„λ‘ μ§€μ‹œν•œ 것을 κ°μ•ˆν•  λ•Œ 특히 λ‘”ν•œ μ£Όμ„μ΄λΌλŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€.

_pip 버전 8.1.1을 μ‚¬μš©ν•˜κ³  μžˆμ§€λ§Œ 버전 10.0.0을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
'pip install --upgrade pip' λͺ…령을 ν†΅ν•œ μ—…κ·Έλ ˆμ΄λ“œλ₯Ό κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€._

ν•΄λ‹Ή μ˜κ²¬μ— 타당성이 μžˆλŠ” 경우 pip μž‘μ„±μžλŠ” 이 λ©”μ‹œμ§€λ₯Ό μ œκ±°ν•΄μ•Ό ν•˜λ©° μ €λŠ” @RonnyPfannschmidt κ°€ ν•΄λ‹Ή λ¬Έμ œμ— λŒ€ν•΄ 문제λ₯Ό μ œκΈ°ν•˜κ³  μžμ‹ μ˜ 펼칠 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

@qacollective- μ—¬κΈ°μ„œ μ£Όμž₯은 배포판이 pipλ₯Ό 가져와 μˆ˜μ •ν•˜κ³  μ €μž₯μ†Œμ— λ‹€μ‹œ νŒ¨ν‚€μ§€ν–ˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ λ©”μ‹œμ§€κ°€ μ—¬μ „νžˆ μ‘΄μž¬ν•˜λŠ” 것은 μ‹€μ œλ‘œ Pypi의 잘λͺ»μ΄ μ•„λ‹™λ‹ˆλ‹€.

λŒ€λΆ€λΆ„μ˜ λ°°ν¬νŒμ€ λͺ¨λ“  것을 자체 νŒ¨ν‚€μ§€ 리포지토리에 λ‹€μ‹œ νŒ¨ν‚€μ§•ν•˜κΈ° μœ„ν•΄ 정말 μ—΄μ‹¬νžˆ λ…Έλ ₯ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ 경우 물건은 썩게 내버렀 λ‘‘λ‹ˆλ‹€.

개인적으둜, 적어도 μš°λΆ„νˆ¬μ˜ python에 λŒ€ν•΄, λ‚˜λŠ” 그듀이 그것을 μ’…λ£Œν•˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€. 기본적으둜 apt의 λͺ¨λ“  python νŒ¨ν‚€μ§€ 버전은 정말 였래된 것뢀터 ν™”μ„ν™”λœ κ²ƒκΉŒμ§€ λ‹€μ–‘ν•©λ‹ˆλ‹€. AptλŠ” 기본적으둜 파이썬, IMHO에 μ“Έλͺ¨κ°€ μ—†μŠ΅λ‹ˆλ‹€.


FWIW, κ°€μž₯ 쒋은 μ˜΅μ…˜μ€ μ²˜μŒλΆ€ν„° distro pipλ₯Ό μ„€μΉ˜ν•˜μ§€ μ•Šκ³  λŒ€μ‹  get-pip.py λ₯Ό 톡해 μˆ˜λ™μœΌλ‘œ μ„€μΉ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·Έλ ‡κ²Œ ν•˜λ©΄ Python νŒ¨ν‚€μ§€ 쀑 μΌλΆ€λ§Œ μ•Œκ³  μžˆλŠ” ν”Œλž«νΌ νŒ¨ν‚€μ§€ κ΄€λ¦¬μžμ— λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

μ‹œμŠ€ν…œ μ’…λ£Œλ₯Ό λ°©μ§€ν•˜λ €λ©΄ 항상 --userλ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

/usr/bin/env python3 -m pip intall --user --upgrade pip

λŒ€λΆ€λΆ„μ˜ 버그가 μžˆλŠ” 경우λ₯Ό μ²˜λ¦¬ν•΄μ•Ό ν•˜λ©° 결과적으둜 μ˜¬λ°”λ₯Έ λ²„μ „μ˜ pipκ°€ ˜/.local/bin 에 μ„€μΉ˜λ©λ‹ˆλ‹€.

@standag 의 μ†”λ£¨μ…˜μ΄ μž‘λ™ν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ•½κ°„μ˜ λ°°κ²½ 지식: 바닐라 μš°λΆ„νˆ¬ 16.04(AWS AMI)μ—μ„œ μ—…κ·Έλ ˆμ΄λ“œ(pip install -U pip)ν•œ ν›„ λ‹€μŒ 상황이 λ°œμƒν•©λ‹ˆλ‹€.
$PATH=..:/usr/local/ bin:... :/usr/ bin:...
/usr/bin/pipλŠ” μ—¬μ „νžˆ 이전/'oem' 버전(손상됨)
/usr/local/bin/pipλŠ” μƒˆλ‘œμš΄ v10 μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€(직접 ν˜ΈμΆœν•  λ•Œ 잘 μž‘λ™ν•¨)

μ μ ˆν•œ pip 버전이 PATHμ—μ„œ 깨진 버전보닀 μ•žμ„œλ”λΌλ„ bashλŠ” μ—¬μ „νžˆ 이전 버전을 κΈ°μ–΅ν•˜λ―€λ‘œ 'pip'둜 ν˜ΈμΆœν•˜λ©΄ μ΄μ „μ˜ 깨진 버전이 μ‹€ν–‰λ©λ‹ˆλ‹€. hash-d pip λ˜λŠ” hash -r은 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€.

λ¨Όμ € μ—¬κΈ° Debian/Ubuntu(및 λͺ‡ 가지 Linux 배포판)μ—μ„œ λ°œμƒν•œ 일에 λŒ€ν•œ λͺ‡ 가지 λ©”λͺ¨κ°€ μžˆμŠ΅λ‹ˆλ‹€.

  • pipλŠ” κ°€μ Έμ˜€κΈ°λ₯Ό 톡해 λ‚΄λΆ€ μ‚¬μš©μ„ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ μ—¬κΈ° λ¬Έμ„œ
  • λ°λΉ„μ•ˆ(λ”°λΌμ„œ Ubuntu)은 νŒ¨ν‚€μ§€ κ΄€λ¦¬μžκ°€ μ•„λ‹Œ 무언가λ₯Ό μ‚¬μš©ν•˜μ—¬ νŒ¨ν‚€μ§€ κ΄€λ¦¬μž 관리 파일 μˆ˜μ •μ„ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” λ‘˜ λ‹€ μ–΄λ–€ μ‹μœΌλ‘œλ“  μœ„λ°˜λ˜μ—ˆκΈ° λ•Œλ¬Έμ— λ°œμƒν•©λ‹ˆλ‹€.

  • λ°λΉ„μ•ˆμ€ pip의 λ‚΄λΆ€ 방법을 μ‚¬μš©ν•©λ‹ˆλ‹€(pip의 λ‚΄λΆ€ μž¬κ΅¬μ„±μœΌλ‘œ 인해 더 이상 μž‘λ™ν•˜μ§€ μ•ŠμŒ). λ°λΉ„μ•ˆμ€ μ—¬κΈ°μ—μ„œ μ €μž₯μ†Œμ˜ pip 버전이 μ„€μΉ˜λ  버전이라고 κ°€μ •ν•©λ‹ˆλ‹€.
  • λ‹€λ₯Έ λ§€κ°œλ³€μˆ˜ 없이 루트둜 pip install --upgrade pip μ‹€ν–‰ν•˜λ©΄ aptμ—μ„œ 관리해야 ν•˜λŠ” 파일이 μˆ˜μ •λ˜μ–΄ Debianμ—μ„œ μŠ€ν¬λ¦½νŠΈκ°€ μ€‘λ‹¨λ©λ‹ˆλ‹€.

Linux에 λŒ€ν•œ λͺ‡ 가지 일반적인 팁:

  • ν™˜κ²½ μ™ΈλΆ€μ—μ„œ --user λ₯Ό μ‚¬μš©ν•˜λŠ” 것은 쒋은 μŠ΅κ΄€μž…λ‹ˆλ‹€.

    pip install --upgrade --user pip
    
  • λ‹Ήμ‹ μ΄ν•˜κ³ μžˆλŠ” 일을 λͺ¨λ₯΄λŠ” ν•œ sudo둜 pipλ₯Ό μ‹€ν–‰ ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€ .


ν•΄κ²° 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@standag 의 μ†”λ£¨μ…˜ 은 이것이 bash의 μ‹€ν–‰ 파일 μΊμ‹±μœΌλ‘œ 인해 λ°œμƒν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

hash -r pip # or hash -d pip

OS νŒ¨ν‚€μ§€ κ΄€λ¦¬μžμ˜ pip μ„€μΉ˜λ₯Ό μˆ˜μ •ν–ˆκ³ (예: sudo pip ) python -m pip κ°€ μ—¬μ „νžˆ μž‘λ™ν•˜λŠ” 경우 ν•œ 가지 ν•΄κ²° 방법은 pip μ„€μΉ˜ 버전을 μ œκ±°ν•˜κ³  νŒ¨ν‚€μ§€ κ΄€λ¦¬μž μ„€μΉ˜ 버전을 λ‹€μ‹œ μ„€μΉ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. .

python -m pip uninstall pip  # this might need sudo
sudo apt install --reinstall python-pip

Debian/Ubuntuλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  _그리고_ pip νŒŒμ‚°ν–ˆλ‹€λ©΄ λ‹€μŒμ„ μ‹€ν–‰ν•΄ λ³΄μ„Έμš”.

python -m pip install --force-reinstall pip

μœ„μ˜ λ°©λ²•μœΌλ‘œ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμœΌλ©΄ μƒˆ 문제λ₯Ό μ œμΆœν•˜μ‹­μ‹œμ˜€.


[ @pradyunsg νŽΈμ§‘: λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆλŠ” λͺ¨λ“  μ‚¬λžŒμ„ 이 λŒ“κΈ€κ³Ό μ—°κ²°ν•˜λŠ” 데 더 관련성이 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. 제거/μž¬μ„€μΉ˜ ν•΄κ²° 방법을 ν¬ν•¨ν•˜λ„λ‘ μ œμ•ˆ μ—…λ°μ΄νŠΈ]

Docker μ™ΈλΆ€μ—μ„œ ν•΄κ²°ν•˜λŠ” 것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ? λ‚΄ 일반 μ‹œμŠ€ν…œμ—μ„œ μ†μƒλ˜μ—ˆμœΌλ©° ν•΄μ‹œ λͺ…령이 pipλ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.
thinkdigital@thinkdigital-HP-Spectre-x360-Convertible:~$ hash -d pip bash: hash: pip: not found

ν”„λ‘œμ νŠΈμ—μ„œ virtualenv에 μ„€μΉ˜λœ pip3, 버전 9.0.1을 μ°Ύμ•„ λ‚΄ /usr/bin에 λ³΅μ‚¬ν–ˆλŠ”λ° λ‹€μ‹œ μž‘λ™ν•©λ‹ˆλ‹€. 슀슀둜 μˆ˜μ •ν•˜κ³  싢은 뢄듀을 μœ„ν•΄ pip3 μ‹€ν–‰ 파일의 λ‚΄μš©μ„ μ†Œκ°œν•©λ‹ˆλ‹€.

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

pip3λΌλŠ” νŒŒμΌμ— μ €μž₯ν•˜κ³  sudo chmod +x ./pip3을 μ‹€ν–‰ν•˜μ—¬ μ‹€ν–‰ κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€κ³  sudo apt remove python3-pipλ₯Ό μ‹€ν–‰ν•œ λ‹€μŒ sudoλ₯Ό μ‹€ν–‰ν•˜μ—¬ bin 디렉토리에 λ³΅μ‚¬ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. cp ./pip3 /usr/bin.
λ‹€μš΄λ‘œλ“œν•˜μ—¬ μ΄λ™ν•˜λ €λŠ” μ‚¬λžŒλ“€μ„ μœ„ν•œ μ›μ‹œ 파일이 μžˆμŠ΅λ‹ˆλ‹€.
pip3.zip

그것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•©λ‹ˆλ‹€:
컬 https://bootstrap.pypa.io/get-pip.py | sudo 파이썬

μ£„μ†‘ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 루트 μ•‘μ„ΈμŠ€ κΆŒν•œμ΄ μžˆλŠ” 일뢀 μ›Ήμ‚¬μ΄νŠΈμ—μ„œ python μ½”λ“œ curl'dλ₯Ό μ‹€ν–‰ν•˜λŠ” 것은 끔찍할 μ •λ„λ‘œ μ•ˆμ „ν•˜μ§€ μ•Šλ‹€λŠ” 점을 μ§€μ ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ™μ˜ν–ˆμœΌλ©° 이것이 곡식적인 핍 ꢌμž₯ 사항이 μ•„λ‹˜μ„ 지적해야 ν•©λ‹ˆλ‹€. μ—¬λŸ¬ 번 μ–ΈκΈ‰ν–ˆλ“―μ΄ μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ κ΄€λ¦¬μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œ pip μ„€μΉ˜λ₯Ό μ—…λ°μ΄νŠΈν•˜κ±°λ‚˜ 관리해야 ν•©λ‹ˆλ‹€. get-pip λ˜λŠ” sudoλ₯Ό ν†΅ν•œ pip μžμ²΄κ°€ μ•„λ‹™λ‹ˆλ‹€ .

이 경우 μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ κ΄€λ¦¬μžμ˜ 버전이 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‘°μ°¨
μ œκ±°ν•˜κ³  λ‹€μ‹œ μ„€μΉ˜ν•œ ν›„.

2018λ…„ 4μ›” 19일 λͺ©μš”일 μ˜€μ „ 1μ‹œ 53뢄에 Paul Moore [email protected]이 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

λ™μ˜ν•©λ‹ˆλ‹€. 이것은 곡식 핍이 μ•„λ‹ˆλΌλŠ” 점을 지적해야 ν•©λ‹ˆλ‹€.
μΆ”μ²œ. μ—¬λŸ¬ 번 μ–ΈκΈ‰ν–ˆλ“―μ΄ λ‹€μŒμ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
μ‹œμŠ€ν…œ pipλ₯Ό μ—…λ°μ΄νŠΈν•˜κ±°λ‚˜ κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ κ΄€λ¦¬μž
get-pipκ°€ μ•„λ‹Œ μ„€μΉ˜ λ˜λŠ” sudoλ₯Ό ν†΅ν•œ 자체 pip.

β€”
당신이 λŒ“κΈ€μ„ λ‹¬μ•˜κΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/pypa/pip/issues/5221#issuecomment-382660881 λ˜λŠ” μŒμ†Œκ±°
μŠ€λ ˆλ“œ
https://github.com/notifications/unsubscribe-auth/AV-Hfecz8l1NEyq3vsih0DpNP7QYdxuvks5tqFCdgaJpZM4TVEq6
.

μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€λ₯Ό λ‹€μ‹œ μ„€μΉ˜ν•΄λ„ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμœΌλ©΄ /usr/local/에 pip10이 μžˆλŠ”μ§€ ν™•μΈν•˜κ³  전체 폴더λ₯Ό μ‚­μ œν•©λ‹ˆλ‹€.

/usr/binμ—μ„œ κ΅μ²΄ν•˜λŠ” 것이 μ €μ—κ²Œ 효과적이라고 μƒκ°ν•˜μ§€λ§Œ
μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ κ΄€λ¦¬μžκ°€ μ„€μΉ˜ν•œ κ²ƒμž…λ‹ˆλ‹€.

[ @pradyunsg λŠ” 이메일 λ‚΄μš©μ„

@ThinkDigitalRepair λ‹€μŒμ΄ 도움이 λ©λ‹ˆκΉŒ?

λ‹€λ₯Έ κ²½μš°μ—λŠ” νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜/μ—…κ·Έλ ˆμ΄λ“œν•  λ•Œ --user λ₯Ό 전달해야 ν•©λ‹ˆλ‹€. TBH, Linuxμ—μ„œλŠ” --user λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

pip install --upgrade --user pip

확인. 감사 ν•΄μš”. λ‚˜λŠ” κ·Έλ“€μ˜ Jupyter Notebook νŠœν† λ¦¬μ–Όμ„ 따라 그것을 μ—‰λ§μœΌλ‘œ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.
pipλ₯Ό 직접 μ—…κ·Έλ ˆμ΄λ“œν•˜λΌκ³  μ•Œλ €μ£ΌλŠ” μ‚¬μ΄νŠΈ. 볡사 및 λΆ™μ—¬λ„£κΈ° 없이
κ²°κ³Όλ₯Ό μ•Œλ©΄ λ‹€μ‹œ μΉœλ‹€. :(

[ @pradyunsg λŠ” 이메일 λ‚΄μš©μ„

@ThinkDigitalRepair pip 10이 κ°œμ„ λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€. 이런 일이 λ°œμƒν•˜λ©΄ κΈ΄ PermissionError λŒ€μ‹  더 λ‚˜μ€ 였λ₯˜ λ©”μ‹œμ§€κ°€ μΈμ‡„λ©λ‹ˆλ‹€.

pip의 λμ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” 것이 μ—†κΈ° λ•Œλ¬Έμ— μ§€κΈˆ 이 문제λ₯Ό λ‹«μŠ΅λ‹ˆλ‹€.

이 문제λ₯Ό μˆ˜μ •/ν•΄κ²°ν•˜λŠ” 방법을 μ°ΎλŠ” μ‚¬λžŒμ€ https://github.com/pypa/pip/issues/5221#issuecomment -382069604λ₯Ό

@pradyunsg λ§Žμ€ 경우 ν•΄λ‹Ή μ˜κ²¬μ— 제곡된 μ†”λ£¨μ…˜μ΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μƒˆλ‘œμš΄ Ubuntu 17.10μ—μ„œ pip install --upgrade pip : κ·Έ ν›„ pip λͺ…령이 μ€‘λ‹¨λ˜κ³  μ£Όμ„μ˜ μ†”λ£¨μ…˜μœΌλ‘œ μˆ˜μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그리고 κ·Έλ“€μ€ν•΄μ„œλŠ” μ•ˆλ©λ‹ˆλ‹€!

μ‚¬μš©μžκ°€ pip 10을 μ„€μΉ˜ν•˜κ³  μ‹œμŠ€ν…œμ— pip 9λ₯Ό μ„€μΉ˜ν•˜λ©΄ μ‹œμŠ€ν…œ pip μŠ€ν¬λ¦½νŠΈκ°€ 잘λͺ»λœ κ°€μ Έμ˜€κΈ° 경둜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μž pip 10μ—μ„œ main() κ°€μ Έμ˜€κΈ°λ₯Ό μ‹œλ„ν•©λ‹ˆλ‹€. Hash -r λ˜λŠ” -dλŠ” pip λͺ…령이 기본적으둜 μ‹œμŠ€ν…œ pipλ₯Ό 계속 μ‹€ν–‰ν•˜κΈ° λ•Œλ¬Έμ— 이 문제λ₯Ό μˆ˜μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그리고 μ‹œμŠ€ν…œ pipλŠ” μ—¬μ „νžˆ 9이고 μ‚¬μš©μž pipλŠ” μ—¬μ „νžˆ 10μ΄λ―€λ‘œ κ°€μ Έμ˜€κΈ°κ°€ 계속 μ‹€νŒ¨ν•˜λ―€λ‘œ μ‚¬μš©μž pip μ—…κ·Έλ ˆμ΄λ“œλ„ μˆ˜μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ κ²½μš°μ— λŒ€ν•œ μ†”λ£¨μ…˜μ€ 두 pip 쀑 ν•˜λ‚˜λ₯Ό μ œκ±°ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • python -m pip uninstall pip --user , 더 였래된 μ‹œμŠ€ν…œ pip μœ μ§€

λ˜λŠ”

  • sudo apt remove python-pip 및 기본적으둜 ν„°λ―Έλ„μ—μ„œ pip λ₯Ό μ‹€ν–‰ν•˜μ—¬ μ•‘μ„ΈμŠ€ν•  수 μ—†λŠ” μ‚¬μš©μž μ„€μΉ˜ pipλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. python -m pip 둜 μ‹€ν–‰ν•˜κ±°λ‚˜ PATH ν™˜κ²½ λ³€μˆ˜ 등에 경둜λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 λͺ¨λ“  것은 python 2와 3μ—μ„œ pip λͺ¨λ‘μ— μ μš©λ©λ‹ˆλ‹€.

λ‚΄ λͺ¨λ“  Ubuntu μ‹œμŠ€ν…œ(16.04, 17.10. 18.04)μ—μ„œ μ‹œμŠ€ν…œ pipκ°€ 이전 버전이고 μ‚¬μš©μžκ°€ pip 10이고 κ°€μ Έμ˜€κΈ° 였λ₯˜κ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
μ‹œμŠ€ν…œμ˜ pipκ°€ μ†μƒλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆκΉŒ?

@gsemet μ•„λ§ˆλ„ ~/.local/bin λ₯Ό PATH ν™˜κ²½ λ³€μˆ˜μ— μΆ”κ°€ν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€(λ˜λŠ” κΈ°λ³Έ bash보닀 더 λ˜‘λ˜‘ν•œ μ‰˜μ„ μ‚¬μš©). λ”°λΌμ„œ pip λ₯Ό μ‹€ν–‰ν•  λ•Œ μ‚¬μš©μžκ°€ μ„€μΉ˜ν•œ pip 10 슀크립트λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œμ— μ„€μΉ˜λœ pip 9 μŠ€ν¬λ¦½νŠΈκ°€ μ•„λ‹™λ‹ˆλ‹€. Ubuntuμ—μ„œλŠ” 기본적으둜 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. λ¬Όλ‘  κ·Έλ ‡κ²Œ ν•  수 있으며 기본적으둜 κ·Έλ ‡κ²Œ λ‚˜μ™”μœΌλ©΄ ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 기본적으둜 pip λͺ…령은 μ‹œμŠ€ν…œμ— μ„€μΉ˜λœ pipλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ„€μΉ˜ν•œ κ²½μš°μ—λ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€.

주석 5221의 λͺ…령이 문제λ₯Ό μˆ˜μ •ν•˜μ§€ λͺ»ν•˜κ³  λ‚΄κ°€ μ œμ•ˆν•œ 것이 μˆ˜μ •ν–ˆλ‹€λŠ” 증거λ₯Ό ν¬ν•¨ν•˜μ—¬ μƒˆλ‘œμš΄ Ubuntu 17.10 μ„€μΉ˜μ—μ„œ 이λ₯Ό μž¬ν˜„ν•˜λŠ” 방법.

pip λͺ…령을 μ€‘λ‹¨ν•˜λŠ” 두 pip(μ‹œμŠ€ν…œ 및 μ‚¬μš©μž) μ„€μΉ˜:

vfisa<strong i="7">@vilos</strong>:~$ sudo apt install python-pip
(...)

vfisa<strong i="8">@vilos</strong>:~$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

vfisa<strong i="9">@vilos</strong>:~$ which pip
/usr/bin/pip

vfisa<strong i="10">@vilos</strong>:~$ pip install pip --upgrade --user
Collecting pip
  Downloading https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl (1.3MB)
    100% |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 1.3MB 631kB/s 
Installing collected packages: pip
Successfully installed pip-10.0.1

vfisa<strong i="11">@vilos</strong>:~$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

vfisa<strong i="12">@vilos</strong>:~$ python -m pip --version
pip 10.0.1 from /home/vfisa/.local/lib/python2.7/site-packages/pip (python 2.7)

vfisa<strong i="13">@vilos</strong>:~$ which pip
/usr/bin/pip

λ³΄μ‹œλ‹€μ‹œν”Ό pip λͺ…령은 기본적으둜 μ‚¬μš©μžκ°€ μ„€μΉ˜ν•œ μ‹œμŠ€ν…œ pipκ°€ μ•„λ‹ˆλΌ μ‹œμŠ€ν…œ pipλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€.

참쑰된 μ£Όμ„μ˜ λͺ…λ Ή, λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 증거:

vfisa<strong i="19">@vilos</strong>:~$ hash -r

vfisa<strong i="20">@vilos</strong>:~$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

vfisa<strong i="21">@vilos</strong>:~$ hash -d
hits    command
   1    /usr/bin/pip

vfisa<strong i="22">@vilos</strong>:~$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

vfisa<strong i="23">@vilos</strong>:~$ python -m pip install pip --force-reinstall --user
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
Successfully installed pip-10.0.1

vfisa<strong i="24">@vilos</strong>:~$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

vfisa<strong i="25">@vilos</strong>:~$ which pip
/usr/bin/pip

λ³΄μ‹œλ‹€μ‹œν”Ό 두 pipκ°€ λͺ¨λ‘ μ„€μΉ˜λ˜μ–΄ 있고 pip λͺ…령이 μ‹œμŠ€ν…œ pip(Ubuntu의 κΈ°λ³Έ λ™μž‘)λ₯Ό κ°€λ¦¬ν‚€λŠ” ν•œ λ¬Έμ œλŠ” μ§€μ†λ©λ‹ˆλ‹€.

μˆ˜μ • μ˜΅μ…˜ 1:

μ‹œμŠ€ν…œ pipλ₯Ό μ œκ±°ν•˜κ³  기본적으둜 pip λͺ…령을 톡해 μ•‘μ„ΈμŠ€ν•  수 μ—†λŠ” μ‚¬μš©μž pipλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€(λ”°λΌμ„œ python -m pip λ₯Ό μ‚¬μš©ν•΄μ•Ό 함).

vfisa<strong i="34">@vilos</strong>:~$ sudo apt remove python-pip
(...)

vfisa<strong i="35">@vilos</strong>:~$ pip
bash: /usr/bin/pip: No such file or directory

vfisa<strong i="36">@vilos</strong>:~$ python -m pip --version
pip 10.0.1 from /home/vfisa/.local/lib/python2.7/site-packages/pip (python 2.7)

~/.local/bin λ₯Ό PATH ν™˜κ²½ λ³€μˆ˜μ— μΆ”κ°€ν•˜μ—¬ μ‚¬μš©μž pip와 ν•¨κ»˜ pip λͺ…령을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μˆ˜μ • μ˜΅μ…˜ 2:

μ‚¬μš©μž pipλ₯Ό μ œκ±°ν•˜κ³  μ‹œμŠ€ν…œ pipλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œ pipλŠ” 이전 λ²„μ „μ΄μ§€λ§Œ 기본적으둜 κ²½λ‘œμ— μž‘λ™ν•˜λŠ” pip λͺ…령이 μžˆμŠ΅λ‹ˆλ‹€.

vfisa<strong i="45">@vilos</strong>:~$ python -m pip uninstall pip
Uninstalling pip-10.0.1:
  Would remove:
    /home/vfisa/.local/bin/pip
    /home/vfisa/.local/bin/pip2
    /home/vfisa/.local/bin/pip2.7
    /home/vfisa/.local/lib/python2.7/site-packages/pip-10.0.1.dist-info/*
    /home/vfisa/.local/lib/python2.7/site-packages/pip/*
Proceed (y/n)? y
  Successfully uninstalled pip-10.0.1
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

vfisa<strong i="46">@vilos</strong>:~$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

@fisadev λ¬Όλ‘ , μ‚¬μš©μž μ„€μΉ˜ κ°€λŠ₯ν•œ 'pip install --user' νŒ¨ν‚€μ§€λ₯Ό μ§€μ›ν•˜λŠ” 데 ν•„μš”ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‚¬μš©μžμ—κ²Œ "debian/ubuntu νŒ¨ν‚€μ§€κ°€ μ—…λ°μ΄νŠΈλ˜κΈ° 전에 pip 10으둜 μ—…λ°μ΄νŠΈλ₯Ό κ°•μ œ μ‹€ν–‰ν•˜λ €λ©΄ pip install --user --upgrade pip λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜κ³  $HOME/.local/bin κ°€ κ²½λ‘œμ— μžˆλŠ”μ§€ 확인해야 ν•©λ‹ˆλ‹€. ν•˜λŠ” 방법은 κ°„λ‹¨ν•©λ‹ˆλ‹€.

@gsemet λ™μ˜ν•©λ‹ˆλ‹€. μ‚¬μš©μžμ—κ²Œ 경둜 μš”κ΅¬ 사항에 λŒ€ν•΄ μ•Œλ €μ•Ό ν•©λ‹ˆλ‹€. 이것은 λ‹€λ₯Έ μŠ€λ ˆλ“œμ—μ„œ μ†”λ£¨μ…˜μœΌλ‘œ μ°Έμ‘°λ˜λŠ” 주석에 μ–ΈκΈ‰λ˜μ§€ μ•Šμ•˜μœΌλ©° ν•œ κ²½μš°μ—λŠ” μ‚¬μš©μžκ°€ ν•΄λ‹Ή λͺ…령을 μ‹€ν–‰ν–ˆμ§€λ§Œ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•Šμ•˜λ‹€κ³  λ§ν•œ 후에도 토둠이 μž κ²ΌμŠ΅λ‹ˆλ‹€./

@fisadev κ°μ‚¬ν•©λ‹ˆλ‹€. μˆ˜μ • μ˜΅μ…˜ 1이 정말 도움이 λ©λ‹ˆλ‹€.

@RonnyPfannschmidt

pipλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œ pipλ₯Ό κ΅μ²΄ν•˜λŠ” 것은 항상 μ‹œμŠ€ν…œ 파괴 ν–‰μœ„μ˜ ν–‰μœ„μ΄λ©°, 이λ₯Ό κ°€ν•œ μ‚¬λžŒμ΄ 낙진에 μ±…μž„μ΄ μžˆμŠ΅λ‹ˆλ‹€.

정신적 κΈ°λ¬Ό νŒŒμ† λŒ“κΈ€μž…λ‹ˆλ‹€. (μˆœμ§„ν•œ) μ—…κ·Έλ ˆμ΄λ“œλ₯Ό μˆ˜ν–‰ν•˜λŠ” μ‚¬λžŒμ΄ μ˜λ„μ μœΌλ‘œ μžμ‹ μ˜ μ„€μΉ˜λ₯Ό μ†μƒμ‹œν‚€λ €λŠ” κ²ƒμ²˜λŸΌ... κ·Έλ ‡λ‹€λ©΄ pip μžμ²΄κ°€ μ‚¬μš©μžμ—κ²Œ 맀번 9.0.1μ—μ„œ 10.0.1둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λ„λ‘ μž”μ†Œλ¦¬λ₯Ό ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. 단일 pip λͺ…령이 μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜ μžμ‹ λ„ κ·Έ ꢌ고λ₯Ό λ”°λžκ³  κ²°κ΅­ 이 ν˜Όλž€μ— λΉ μ‘Œλ‹€.

λ‹€ν–‰μŠ€λŸ½κ²Œλ„:
sudo python -m pip install pip==9.0.1
μΆ©λΆ„νžˆ μ‰¬μš΄ μΉ˜λ£Œλ²•μ΄μ—ˆλ‹€.

κ·Έλ ‡λ‹€κ³  ν”Όν•΄μžλ₯Ό νƒ“ν•˜λŠ” 것은 닡이 μ•„λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @rod-app!

κ·Έλ ‡λ‹€λ©΄ pip μžμ²΄λŠ” λͺ¨λ“  단일 pip λͺ…령이 싀행될 λ•Œλ§ˆλ‹€ μ‚¬μš©μžμ—κ²Œ 9.0.1μ—μ„œ 10.0.1둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λ„λ‘ μž”μ†Œλ¦¬λ₯Ό ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.

μš°λ¦¬λŠ” 이것을 μ•Œμ•„μ°¨λ Έκ³  pip의 ν–₯ν›„ λ²„μ „μ—μ„œ 이것을 ν”Όν•˜κΈ° μœ„ν•΄ OS 곡급업체와 ν˜‘λ ₯ν–ˆμŠ΅λ‹ˆλ‹€. -- #5346.

λ‚΄κ°€ μ‹€ν–‰ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄...

sudo geany -i /usr/bin/pip

...그리고 λ°λΉ„μ•ˆμ—μ„œ μ œκ³΅ν•œ /usr/bin/pipλ₯Ό μˆ˜μ •ν•˜μ—¬ λ‹€μŒμœΌλ‘œ λŒ€μ²΄ν–ˆμŠ΅λ‹ˆλ‹€...

#!/bin/sh
# GENERATED BY CEFN
python -m pip "$@"

/usr/bin/pip3에 ν•΄λ‹Ήν•©λ‹ˆλ‹€(μ΄λŠ” λŒ€μ‹  python3을 ν˜ΈμΆœν•©λ‹ˆλ‹€).

#!/bin/sh
# GENERATED BY CEFN
python3 -m pip "$@"

...λ‚΄ μ‚¬μ΄νŠΈ νŒ¨ν‚€μ§€μ— μ„€μΉ˜λœ 버전 10에도 λΆˆκ΅¬ν•˜κ³  pip의 전체 κΈ°λŠ₯을 λ‹€μ‹œ κ°€μ Έμ˜΅λ‹ˆλ‹€. μ—…λ°μ΄νŠΈλœ python-pip νŒ¨ν‚€μ§€λ₯Ό λ³΄λ‚΄μ„œ λ°λΉ„μ•ˆμ—μ„œ 문제λ₯Ό μˆ˜μ •(λ˜λŠ” λ‹€μ‹œ 쀑단)ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„λ§ŒνΌλ§Œ 이 μž‘μ—…μ΄ 계속될 것이라고 μƒκ°ν•©λ‹ˆλ‹€. 그듀이 μ²˜μŒμ— νŒ¨ν‚€μ§€ 메인을 μ‚¬μš©ν•˜μ§€ μ•Šμ€ μ΄μœ λŠ” λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

곡식 버전

μ•„λž˜μ— ν‘œμ‹œλœ .local/bin/pip μ„€μΉ˜λœ pip 버전은 μ’€ 더 κ³ κΈ‰μŠ€λŸ½κ³  μ „λ‹¬λœ μΈμˆ˜μ—μ„œ -script, .py, .pyw 및 .exe ν™•μž₯자λ₯Ό μ œκ±°ν•˜λŠ” λŒ€μ²΄ ν•­λͺ©μ„ ν¬ν•¨ν•˜μ§€λ§Œ 그게 무엇을 ν•˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. λ˜λŠ” λ‚΄κ°€ μ™œ 그것을 ν•„μš”λ‘œ ν•˜λŠ”μ§€ 간단함을 μœ„ν•΄ μœ„μ— λ‚¨κ²¨λ‘μ—ˆμŠ΅λ‹ˆλ‹€.

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

이 pip v10 문제의 κ΄€λ ¨ μ—†λŠ” 원인을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. --system이 기본값인 μ•„μ£Ό 였래된 μ‹œμŠ€ν…œ pip(Debian Jessie의 v1.5.6, 즉 oldstable)λ₯Ό μ‚¬μš©ν•˜μ—¬ pipλ₯Ό μ—…κ·Έλ ˆμ΄λ“œν•  λ•Œ from pip import main ν¬ν•¨ν•˜λŠ” /usr/local/bin/pip 와 같이 잘λͺ»λœ μŠ€ν¬λ¦½νŠΈκ°€ μ„€μΉ˜λœ 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€ from pip import main -- νŒŒμΌμ„ 보고 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. 이전 pip(λ˜λŠ” μ‚¬μš©ν•˜λŠ” μ„€μΉ˜ νŒ¨ν‚€μ§€)κ°€ .whl νŒŒμΌμ„ 잘λͺ» μ„€μΉ˜ν•˜κΈ° λ•Œλ¬Έμ΄λΌκ³  κ°€μ •ν•©λ‹ˆλ‹€.

python -m pip install --force-reinstall pip μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.

5599λŠ” 정보λ₯Ό μ œκ³΅ν•˜κ³  μ΅œμ’… μ‚¬μš©μžλ₯Ό μœ„ν•΄ 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 도움을 ꡬ할 수 μžˆλŠ” 단일 μœ„μΉ˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή 문제의 의견 μ„Ήμ…˜μ€ μ‚¬μš©μžκ°€ νŠΉμ • 문제 및 μ†”λ£¨μ…˜μ— λŒ€ν•΄ λ…Όμ˜ν•  수 μžˆλ„λ‘ μ—΄λ € μžˆμŠ΅λ‹ˆλ‹€. :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰