"pip 설치"와 "python-m pip 설치"의 차이점은 무엇입니까?
Python 3.4.1의 로컬 버전이 있으며 실행할 수 있습니다.python -m pip install
하지만 실행할 파이프 바이너리를 찾을 수 없습니다.pip install
이 둘의 차이점은 무엇입니까?
그들은 정확히 같은 일을 합니다.사실, 파이썬 모듈 배포를 위한 문서는 다음을 사용하도록 제안하기 위해 업데이트되었습니다.python -m pip
대신에pip
실행 파일, 왜냐하면 실제로 실행하기 위해 어떤 버전의 파이썬이 사용될 것인지를 더 쉽게 알 수 있기 때문입니다.pip
그와 같이.
여기 내 말과 내가 링크한 버그 보고서를 신뢰하는 것을 넘어 더 구체적인 "증거"가 있습니다 :)
다음을 보시면,pip
실행 가능한 스크립트는 다음과 같습니다.
from pkg_resources import load_entry_point
<snip>
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
이것은 함수를 반환하는 호출입니다. 그리고 그 함수를 실행합니다.사용 중인 진입점의 이름은'console_scripts'
entry_points를 보시면요.txt 파일:pip
(/usr/lib/ntry2.7/dist-info/ntry-1.5.4.ntry-info/entry_points).내 Ubuntu 컴퓨터에서 txt), 다음과 같이 표시됩니다.
[console_scripts]
pip = pip:main
pip2.7 = pip:main
pip2 = pip:main
그래서 반환된 진입점은main
에서 기능하는.pip
모듈.
실행할 때python -m pip
당신은 그것을 실행하고 있습니다.__main__.py
내부 스크립트pip
꾸러미이것은 다음과 같습니다.
import sys
from .runner import run
if __name__ == '__main__':
exit = run()
if exit:
sys.exit(exit)
그리고.runner.run
함수는 다음과 같습니다.
def run():
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
## FIXME: this is kind of crude; if we could create a fake pip
## module, then exec into it and update pip.__path__ properly, we
## wouldn't have to update sys.path:
sys.path.insert(0, base)
import pip
return pip.main()
보다시피, 그것은 단지 전화를 거는 것입니다.pip.main
기능도 있습니다.그래서 두 명령 모두 동일하게 호출됩니다.main
에서 기능하는.pip/__init__.py
.
2021
이는 PyCharm으로 venv를 생성하는 경우에만 발생합니다.Scripts/pip-script.py 이 가상 환경에 있는지 확인하십시오.
pip install
그리고.python -m pip install
사실은 같지 않습니다.아니면 버전 관리 & 의존성의 지옥으로 돌아온 것을 환영합니다 :-(
타이핑에 익숙했습니다.pip(.exe) install <name>
패키지 설치를 원할 경우하지만 Pillow 패키지를 설치하려고 하면 문제가 발생합니다.그것은 매번 오류 메시지와 함께 깨집니다.
오늘 나는 다시 시도합니다.python -m pip install
설명서에서 복사하여 붙여넣으면 작동합니다.무시하고 pip을 입력하기 전에...왜냐하면 저는 그것이 같다고 생각했기 때문입니다.
저는 pip에 대해 조금 더 깊이 파고들기 시작했고 이 질문/답변을 발견했습니다.잠시 후 저는 그 핍을 발견했습니다.exe는 스크립트를 <virtual-environment/Scripts>pip-script.py 라고 부릅니다.
나는 Pillow 패키지 설치로 싸웁니다.
#! .\venv\Scripts\python.exe
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==19.0.3','console_scripts','pip3'
__requires__ = 'pip==19.0.3'
import re
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(
load_entry_point('pip==19.0.3', 'console_scripts', 'pip3')()
)
저는 pip.exe가 새로운 설치 버전 21.0.1이 아닌 패키지의 이전 버전 19.0.3을 여전히 사용한다는 것에 조금 놀랐습니다.
두 개의 버전 문자열을 손으로 21.0.1로 변경했습니다.그리고 이제 pip.exe는 Pillow를 제대로 설치할 수 있었습니다.
지금부터 나는 왜 pip이 여전히 내가 오래된 버전의 pip을 사용한다고 불평하는지 이해합니다.
이전 v19 pip은 지원되는 플랫폼을 감지하는 데 문제가 있어 바이너리 대신 소스가 설치된 것 같습니다.
언급URL : https://stackoverflow.com/questions/25749621/whats-the-difference-between-pip-install-and-python-m-pip-install
'programing' 카테고리의 다른 글
Azure 스토리지 에뮬레이터가 설치되지 않음 (0) | 2023.05.16 |
---|---|
VBA를 사용하지 않고 Excel에서 활성 행/열을 강조 표시하시겠습니까? (0) | 2023.05.16 |
응용 프로그램의 다른 인스턴스가 실행 중인지 확인하는 방법 (0) | 2023.05.16 |
도커 컨테이너에 호스트 디렉토리를 마운트하는 방법 (0) | 2023.05.16 |
사설 Github repo를 npm 종속성으로 사용하는 방법 (0) | 2023.05.16 |