pip이 아닌 python-m pip을 사용하면 어떤 효과가 있습니까?
를 할 때python -m pip install <package>
그것이 단지 사용하는 것과 어떻게 다릅니까?pip install <package>
마찬가지로, 내가 왜 글을 쓰겠어요?python -m pip install --upgrade pip
핍을 업그레이드하기 위해, 그냥.pip install --upgrade pip
?
다음 시나리오를 생각해 보십시오.
다음 세 가지 버전의 Python이 설치되어 있습니다.
- 파이썬 3.7
- 파이썬 3.8
- 파이썬 3.9
기본 버전은 3.8입니다.그것은 당신의 길에 나타나는 첫 번째 것입니다.따라서 입력할 때python3
Mac) (Linux 또는 Mac) 또python
(윈도우즈) 셸에서 3.8 인터프리터를 시작합니다. 왜냐하면 그것은 경로를 횡단할 때 발견되는 첫 번째 파이썬 실행 파일이기 때문입니다.
그런 다음 Python 3.9를 사용할 새 프로젝트를 시작한다고 가정합니다.인 다과같환생다성니합경을을 합니다..venv
활성화합니다.
python3.9 -m venv .venv # "py -3.9" on Windows
source .venv/bin/activate # ".venv\Scripts\activate" on Windows
이제 Python 3.9를 사용하여 가상 환경을 활성화했습니다.자치 기타를 합니다.python
셸에서 3.9 인터프리터를 시작합니다.
그러나 입력할 경우
pip install <some-package>
의 그면어떤버의전러▁version▁then▁of의전▁what버떤.pip
사용하시겠습니까?기본 버전의 파이프입니까?Python 3.8 또는 가상 환경 내의 Python 버전?
그 모호함을 피하는 쉬운 방법은 단순히 사용하는 것입니다.
python -m pip install <some-package>
그-m
플래그는 활성 Python 실행 파일에 연결된 pip을 사용하고 있는지 확인합니다.
상항사는것좋다습니이하용▁to▁use다▁practice좋니▁always▁it습'▁good를 사용하는 것이 좋습니다.-m
가상 환경을 생성하는 데 사용되는 Python의 글로벌 버전이 하나만 설치되어 있는 경우에도 마찬가지입니다.
Re. 경로
이른바 경로는 시스템이 실행 파일을 검색하는 디렉터리 목록입니다.명령을 입력할 때 다음과 같이 입력합니다.python
이 목록은 첫 번째 디렉터리에서 마지막 디렉터리로 이동하여 입력한 명령과 일치하는 파일 이름을 검색합니다.
파일 이름/명령을 찾으면 나중에 일치할 가능성을 고려하지 않고 일치된 파일이 실행됩니다.일치하는 항목이 없는 경우Command not found
또는 그 변형.이 동작은 의도적으로 수행됩니다.
는 UNIX 시스경로환변다불다같립니라고 합니다.$PATH
시스는다같표다시니라고 합니다.%PATH%
의견인적에 더 -m
-플래그 (2022년 12월)
이것을 보고 있는 대부분의 사람들은 위에 설명된 pip을 원할 것입니다. 더 에서 지만일인의서미에때반적을 할 때는 사할용하▁using.python -m some_module
,-m
이 flag를 실행하도록 .some_module
대본으로서이는 문서에 명시되어 있지만 기본 지식이 없으면 이해하기 어려울 수 있습니다.
"스크립트로 실행"하는 것은 무엇을 의미합니까?
Python에서 Python은some_module
으로 적으로다 파이썬 일옵가다로 .import some_module
가져오기 파일의 맨 위에 있는 문입니다.를 통해 통를해다정함수의, 클및변사수에 정의된 할 수 .some_module
파일을 가져올 수 있습니다.some_module
스크립트로 할 수 .if __name__ == "__main__"
파일 내부를 차단합니다.은 실시이블실행다니됩이록을 실행할 때 됩니다.python some_module.py
명령행에서.이 기능은 다른 파일로 가져올 때 이 코드 블록을 실행하지 않고 명령줄에서 호출할 때 실행하기 때문에 유용합니다.
Python은 터미널에서 실행할 때 작업 디렉터리에서 모듈을 찾기 때문에 프로젝트 내부의 모듈의 경우 이 스크립트/모듈 구조가 그대로 실행되어야 합니다.
python some_module.py
그러나 Python의 Standard Library에 포함된 모듈의 경우에는 이 기능이 작동하지 않습니다.는 Python 문서다사용다니합을 합니다.timeit
(pip
동일하게 작동):
python3 timeit -s 'print("hello")' # 'python timeit.py ...' fails as well
그러면 다음 오류가 반환됩니다."python: can't open file '/home/<username>/timeit': [Errno 2] No such file or directory"
추가-m
에게 "Python"의 경로를 찾으라고 .timeit.py
합니다.if __name__ == "__main__"
파일의 절입니다.
python3 -m timeit -s 'print("hello")'
이것은 예상대로 작동합니다.
.if __name__ == "__main__"
시간 블록은 여기에서 확인할 수 있습니다.
Python Docs에서:
인수가 모듈 이름이므로 파일 확장자(.py)를 지정할 수 없습니다. 그
module-name
유효한 Python 모듈 이름이어야 하지만 구현이 항상 이 이름을 강제하지는 않을 수 있습니다(예: 하이픈을 포함하는 이름을 사용할 수 있음).패키지 이름도 허용됩니다.모듈이 가 일모듈대패이제인실면다행니가됩터리터프반공하을 합니다.
<pkg>.__main__
이 및 합니다.이 동작은 스크립트 인수로 인터프리터에 전달되는 디렉토리 및 zip 파일의 처리와 의도적으로 유사합니다.
는 경우력을 하면.python --help
당신은.
// More flags above
-m mod : run library module as a script (terminates option list)
// and more flags below
터미널에 있는 많은 것들이 당신에게 그것을 사용하는 방법을 보여줄 것입니다 만약 당신이 사용한다면.command --help
또는man command
그-m
의 약자module-name
.
파이썬 [-bbdEhi]IOqsSuvVWx?] [-c 명령 | -m module-name | 스크립트 | - ] [args]
때-m
와 함께 사용됩니다.python
을 연 에 " " "라는 이름으로 표시됨"을 입력합니다.<module_name>
그러면 모듈을 실행 파일로 실행할 수 있습니다.
내용에 문서를 하거나 python 문서를 실행할 수 .python --help
이것은 사실 흥미로운 질문이기 때문에, 상위 댓글에 있는 @jedwards에 의해 연결된 pep 338에 대해 알아보겠습니다.
-m 플래그는 원래 모듈 이름을 스크립트 이름으로 변환하는 더 간단한 목적으로 사용되었습니다.python 2.4에서 동작은 다음과 같습니다.
the command line is effectively reinterpreted from python <options> -m
<module> <args> to python <options> <filename> <args>.
이것은 별로 유용하지 않은 것처럼 보이지만, 그 당시에는 그렇게 했습니다.펩 338은 이러한 행동을 더욱 확장시킵니다.
제안된 의미론은 상당히 단순합니다. -m을 사용하여 모듈을 실행하는 경우 PEP 302 가져오기 메커니즘은 최상위 모듈에 대한 의미론에 따라 모듈을 실행하기 전에 모듈을 찾고 컴파일된 코드를 검색하는 데 사용됩니다.
python이 모듈의 원본 패키지를 식별하고 표준 프로세스를 사용하여 패키지를 가져오고 모듈을 실행한다는 것을 추가로 설명합니다.제가 알기로는 "python3-m package.module"이라고 부르는 것은 다음과 같습니다.
python3
from package import module
을 -m으로 실행합니다.__file__
그리고 아닌__main__
또한 스크립트의 디렉터리 대신 로컬 디렉터리를 sys.path에 삽입합니다.따라서 의도적이지는 않았지만 상대적인 수입을 중단하므로 저자는 항상 절대 수입을 사용할 것을 권장합니다."3-m package."는 "3-m module"입니다.
이론적으로 이것은 간단합니다. 코드를 에 버리는 대신 파이썬을 로드하고 모듈을 가져옵니다.실제로는 많은 효과가 있습니다.그것은 다르게 작동하는 다른 수입 시스템입니다.이러한 변경 사항 중 일부는 의도적이지 않았으며 구현 후에만 발견되었습니다.파이썬의 수입은 엉망이고 혼란스러워도 괜찮습니다.
놀랍게도 이것은 어떤 사람들이 그 질문이 너무 간단해서 귀찮다고 말할 때 대답하기가 너무 어렵습니다.
제가 알기로는 실제 목적은 디렉토리에 없을 때 점 표기법을 사용하여 스크립트를 실행할 수 있도록 하는 것입니다.
실행할 수 있습니다.python -m path.to.my.happy.place
안에있대에에 path/to/my/happy
중인 닝러python place.py
pip을 하려면 pip을 업그레이드해야 .pip install --upgrade pip
어떤 파이썬 버전이 영향을 받을지 어떻게 알 수 있습니까?셸의 경로 변수에 따라 다릅니다.이 경우 경고를 받을 수도 있습니다.이러한 혼동을 방지하려면 다음을 사용합니다.-m
그런 다음 sys.path 변수를 찾습니다.이것은 의 또 다른 장점입니다.-m
.
# importing module
import sys
# printing all directories for
# interpreter to search
sys.path
언급URL : https://stackoverflow.com/questions/50821312/what-is-the-effect-of-using-python-m-pip-instead-of-just-pip
'programing' 카테고리의 다른 글
각도 라우팅이란 무엇입니까? (0) | 2023.07.14 |
---|---|
새 줄 '\n'이(가) 유형 스크립트에서 작동하지 않습니다. (0) | 2023.07.14 |
TS2786 '구성 요소'는 JSX 구성 요소로 사용할 수 없습니다. (0) | 2023.07.14 |
Git에서 추적되지 않은 파일을 제거하는 방법은 무엇입니까? (0) | 2023.07.09 |
WordPress로 버전 제어하는 방법 (0) | 2023.07.09 |