sourcecode

"pip install --user..."의 목적은 무엇입니까?

copyscript 2022. 10. 27. 22:23
반응형

"pip install --user..."의 목적은 무엇입니까?

터에서pip install --help::::

--user  Install to the Python user install directory for your platform. 
        Typically ~/.local/, or %APPDATA%\Python on Windows. 
        (See the Python documentation for site.USER_BASE for full details.)

The documentation for 의 매뉴얼site.USER_BASE이해 못하겠어.내가 이해할 수 없는 흥미로운 *NIX 주제의 무시무시한 웜홀이다.

쉬운 영어로의 목적은 무엇입니까?패키지를 설치하는 이유는 무엇입니까?~/.local/무슨 일이야?문제가 있나요?왜 딘 내 가 행 일 지 죠 는 거 why not my? put않?$PATH????

파이썬 패키지를 시스템 디렉토리로 설치하려면 Pip such 스 렉 은 python 키 치 설 합 니 pip : 다예( to 지 를 pip defaults as directory디시에/usr/local/lib/python3.4이). 루트 액세스 권한이 필요합니다.) ) root 액세스가 필요합니다.

--user대신 홈 디렉토리에서 파이프를 설치하면 특별한 권한이 필요하지 않습니다.는 특별한 권한이 필요 없는 홈디렉토리에 pip 인스톨 패키지를 작성합니다.

--user는 에 인스톨 됩니다.

경우는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★./Users/.../Library/Python/2.7/binPATH」의 「PATH」의 「PATH」).~/.bash_profile 삭제):

export PATH=$PATH:/Users/.../Library/Python/2.7/bin

경고입니다.

이번 호를 보면--user는 현재 환경 하지 않습니다.pip사용자 위치는 가상 환경에 적합하지 않기 때문입니다.

이 말은 .pip install --user some_pkg 가상 환경 내, 그렇지 않은 경우 가상 환경 내pip헷갈릴 거예요.상세한 것에 대하여는, 다음의 회답을 참조해 주세요.

가상 환경 없음

pip <command> --user는 현재 pip 명령의 범위를 시스템 전체 패키지 설치 위치(기본값)가 아닌 현재 사용자 계정의 로컬 python 패키지 설치 위치에서 작동하도록 변경합니다.

  • 「PIP 유저 가이드」의 「사용자 인스톨」을 참조해 주세요.

이것은 멀티 유저 머신에서만 문제가 됩니다.시스템 로케이션에 인스톨 되어 있는 것은, 모든 유저가 확인할 수 있기 때문에, 유저 로케이션에 인스톨 하면, 그 패키지의 인스톨이 다른 유저로부터 분리됩니다(이러한 인스톨은 표시되지 않기 때문에, 직접 인스톨 해 사용할 필요가 있습니다).버전 경합이 발생할 수 있으므로 다른 패키지에 필요한 종속성을 가진 패키지를 설치하면 문제가 발생할 수 있으므로 특정 사용자가 사용하는 모든 패키지를 시스템 설치 위치에 푸시하지 않는 것이 좋습니다.

  • 머신인 는, 「」, 「」, 「」에 하는 .--user 수도 있고 수도 다른 패키지는셸에서 합니다).패키지와 사용 방법에 따라 경로에 추가할 필요가 있거나 추가할 필요가 없는 다른 폴더에 설치됩니다(많은 패키지는 셸에서 실행하기 위해 경로에 있어야 하는 명령줄 도구를 설치합니다).
  • 머신인 는, 「」를 참조해 주세요.--user하거나 모든 Python 을 주는 가 기본적으로 할 수 는 제외합니다.root/sudo는 Python 환경에 영향을 줍니다.
    • 주의: 대부분의 /Linux 의에서는, 「/Linux 의 인스톨」, 「Unix/Linux 의 인스톨」, 「Unix/Linux 의 인스톨」, 「Unix/Linux 의 인스톨」매니저를 .apt 보다pip.

가상 환경에서의 사용

--user활성 venv/virtualenv 환경의 옵션은 로컬 사용자 python 위치에 설치됩니다(가상 환경이 없는 경우와 동일).

패키지는 기본적으로 가상 환경에 설치되지만--user가상 환경 외부의 사용자 python 스크립트 디렉토리에 강제로 설치됩니다(Windows의 경우 현재 이 기능은c:\users\<username>\appdata\roaming\python\python37\scriptsPython 3.7)을 사용할 수 있습니다.

그러나 가상 환경 내에서 시스템 또는 사용자 설치에 액세스할 수 없습니다(사용자가--user가상 환경에 있는 동안).

를 사용하여 가상 환경을 설치하는 경우--system-site-packagespython의 시스템스크립트 폴더에 액세스 할 수 있습니다.사용자 python 스크립트 폴더도 포함되었다고 생각합니다만, 잘 모르겠습니다.그러나 이로 인해 의도하지 않은 결과가 발생할 수 있으며 이는 가상 환경을 사용하는 의도된 방법이 아닙니다.


Python 시스템 및 로컬 사용자 설치 폴더 위치

python 사용자 설치 폴더의 위치는 다음과 같습니다.python -m site --user-baseQ&A, 매뉴얼에서 모순되는 정보를 찾을 수 있으며 PC에서 이 명령어를 사용하여 기본값이 무엇인지 확인하고 있지만 사용자 홈 디렉토리 아래에 있습니다.~*nix 단축키 및c:\users\<username>(일반적으로 Windows의 경우)


기타 상세

--user옵션이 모든 명령어에 유효한 것은 아닙니다.예를들면pip uninstall패키지가 설치된 장소(사용자 폴더, 가상 환경 폴더 등)와 패키지를 검색 및 제거합니다.--user옵션이 유효하지 않습니다.

가 설치된 것pip install --user는 현재 사용자 계정에서만 볼 수 있는 로컬 위치에 설치되며 루트 액세스(*nix) 또는 관리자 액세스(Windows)는 필요하지 않습니다.

--useroption은 모두 변경합니다. pip사용자 설치 폴더에 표시/조작할 수 있도록 허용하는 명령어입니다.pip list --user설치된 패키지만 표시됩니다.pip install --user.

기타 답변은 다음과 같습니다.site.USER_SITEPython 패키지가 배치되는 장소입니다.바이너리를 찾고 있는 경우는, 이러한 바이너리를 사용해 주세요.{site.USER_BASE}/bin.

셸의 검색 경로에 이 디렉토리를 추가하려면 다음을 사용하십시오.

export PATH="${PATH}:$(python3 -c 'import site; print(site.USER_BASE)')/bin"

를 인스톨 하는 것이 가장 좋은 방법입니다.virtualenv필요한 것은 없습니다.--user혼란.패키지를 pip으로 설치할 때마다 다양한 python 버전과 프로젝트를 클로버링할 염려가 없어지고 유연성이 향상됩니다.

https://virtualenv.pypa.io/en/stable/

macOS에서 를 사용하는 이유--user플래그는 OS가 의존하는 라이브러리를 손상시키지 않도록 하기 위한 것입니다.많은 MacOS 사용자들에게 보수적인 접근법은 필요한 명령어를 사용하여 pip 설치 또는 업데이트를 피하는 것입니다.sudo따라서 이 작업에는 에의 인스톨이 포함됩니다./usr/local/bin...

참조: Neovim용 python 설치(https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim)

왜 에 설치하는지는 잘 모르겠습니다./usr/local/bin시스템이 Python 바이너리에만 의존한다는 사실을 고려할 때 Mac에서는 위험합니다./Library/Frameworks/그리고./usr/bin위에서 설명한 바와 같이, 설치 시/usr/local/bin필요.sudo이로 인해 시스템 라이브러리에서 비용이 많이 드는 실수를 저지르게 됩니다.그 때문에, 에의 인스톨~/.local/bin이 위험을 피할 수 있는 확실한 방법이에요

참고 자료: Mac에서 python 사용(https://docs.python.org/2/using/mac.html)

마지막으로 패키지의 설치에는 어느 정도 이점이 있습니다./usr/local/bin디렉토리 소유자를 변경하는 것이 타당한지 궁금합니다.root로.user? 이렇게 하면 시스템 의존적인 변경으로부터 보호하면서도 사용할 필요가 없어집니다.* 보안 디폴트는 과거에 Unix 시스템이 (서버로서) 얼마나 자주 사용되었는지를 보여주는 것입니까?아니면 최소한 서버를 호스팅하지 않는 Mac 사용자를 위한 좋은 방법인가요?

*주의: Mac의 SIP(System Integrity Protection) 기능은 사용자가 시스템에 의존하는 라이브러리를 변경하지 못하도록 보호합니다.

(E)

패키지를 ~/.local/에 삽입하는 것이 중요한 이유는 무엇입니까?왜 내 $PATH 어딘가에 실행 파일을 넣지 않는 거죠?

~/.local/bin directory는 이론적으로 있을 것으로 예상됩니다.

사람들에 따르면 버그에 추가하지 않는 것은$PATH사용할 때systemd.

답변은 그것을 더 광범위하게 설명한다.

하지만 당신의 디스트로에는~/.local/bin디렉토리는 다음 형식일 수 있습니다.~/.profile):

if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

디렉토리를 처음 작성할 때 로그아웃하고 다시 로그인해야 합니다.

자신의 Conda env를 사용하는 경우,--user그리고 만약 당신이 공공 콘도를 사용한다면,--user집에 pkgs를 설치하다~/.local/lib/.

언급URL : https://stackoverflow.com/questions/42988977/what-is-the-purpose-of-pip-install-user

반응형