$ HOME 폴더에 pip 패키지 설치


330

가능합니까? 를 설치할 때 pip$HOME폴더 안에 파이썬 패키지를 설치하십시오 . (예를 들어, 내가 설치하려는 mercurial사용 pip하지만, 내부 $HOME대신 /usr/local)

나는 맥 머신을 가지고 있고이 가능성에 대해 생각했다. 내 "오염"대신에 /usr/local$HOME대신을 사용할 것이다 .

PEP370 은 바로 이것에 관한 것입니다. 이 패키지를 $ HOME 폴더에만 설치할 수 있도록 ˜/.locala를 작성하고 pip install package충분히 수행 합니까?


virtualenv를 체크 아웃 했습니까? 격리 된 환경에서 pip로 패키지를 설치할 수 있습니다.
joet3ch

2
나는 그것에 대해 생각했지만 기존 파이썬 (2.6.1)을 사용하여 일부 파이썬 응용 프로그램을 설치하고 싶지만 / usr / local /에 설치하는 대신 $ HOME 폴더에 설치하고 $ PATH에 추가하십시오. 그것이 가능한지 알고 싶습니다.이 접근법의주의 사항.
누군가 아직도 당신을 사용합니다 MS-DOS

11
PEP370 홍보를위한 +1 이것은 더 많은 사람들이 알아야 할 간단하지만 유용한 옵션입니다.
Ned Deily

나는 비슷한 문제로 싸우고 있었다 (아마도 두 개의 다른 파이톤에 대해 잘못 구성된 pip 및 easy_install으로 인해 발생했을 수 있음). 마지막 수단으로 나는 plain을 사용하려고했습니다 $ python setup.py --user install. 그리고 효과가있었습니다. 이제 패키지가 홈 하위 디렉토리에 설치되었으며 모든 것이 예상대로 작동합니다. 내 서버 관리자와 대화해야합니다.
Jan Vlcinsky

1
당신은 PIP를 설치해야하는 경우처럼 뭔가를 할 wget https://bootstrap.pypa.io/get-pip.py다음에 python get-pip.py당신이있는 거 좋은 이동합니다. 설치된 PIP가 너무 오래된 컴퓨터를 사용하는 경우 유용 할 수 있습니다 (나에게 적합 함). 자세한 내용은 pip.readthedocs.org/en/latest/installing.html 을 참조하십시오 .
Markus

답변:


463

을 사용할 virtualenv수는 있지만 필요하지 않습니다. 트릭은 PEP370 --user인수를 setup.py스크립트에 전달하는 것 입니다. 최신 버전의을 사용하는 pip한 가지 방법은 다음과 같습니다.

pip install --user mercurial

이로 인해 hg스크립트가 설치되고 $HOME/.local/bin/hg나머지 hg 패키지는에 설치 $HOME/.local/lib/pythonx.y/site-packages/됩니다.

위의 내용은 Python 2.6에 해당합니다. 이 있었다 논쟁의 비트 PEP370 스타일에 대한 맥 OS X의 해당 디렉토리 위치 무엇인지에 대한 파이썬 핵심 개발자들 사이에서 user설치. 파이썬 2.7 및 3.2, 맥 OS X의 위치가 변경되었습니다 $HOME/.local$HOME/Library/Python. 향후 릴리스에서 변경 될 수 있습니다. 그러나 현재로서는 2.7 (및 hgPython 3에서 지원되는 경우 3.2 )에서 위의 위치는 $HOME/Library/Python/x.y/bin/hg$HOME/Library/Python/x.y/lib/python/site-packages입니다.


좋은 지적. 불행히도 Python 2.7에는 OS X 프레임 워크 빌드에서 PYTHONUSERBASE가 무시되는 버그가 있습니다. 파이썬 2.7.3에서 수정 될 것입니다.
Ned Deily

1
이것은 매우 근사해 보입니다. easy_install기본적으로 Mac OS X에 설치되므로 $HOME폴더 외부에 pip 만 설치됩니다 .
누군가 아직도 당신을 사용합니다 MS-DOS

1
PYTHONUSERBASE를 다른 위치로 변경하려고했습니다. 성공하지 못했습니다. 이것은 Windows에서 구체적으로 어떻게 수행됩니까?
Snerd

2
이 작업을 수행 한 다음 conda 환경을 사용하려고하면 설치된 파일 .local이 항상 먼저 시작되므로 가져 오기 오류를 추적하기가 매우 어려울 수 있습니다.
tacaswell

12
OSX에서 사용자 사이트 디렉토리의 bin 폴더는 PATH에 없습니다. 즉, 사용자 사이트 디렉토리에 패키지로 설치된 스크립트는 사용자가 아닌 이상 실행할 수 없습니다 export PATH=$PATH:~/Library/Python/X.Y/bin/.
André Caron

21

HOME 디렉토리에서 virtualenv를 사용합니다.

$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...

~/.(login|profile|bash_profile)쉘이 PATH에 ~ / bin을 추가하는 것이 옳은 것을 변경할 수도 있습니다 . 그러면 pip|python|easy_install기본적으로 사용됩니다.


9
"사실상" 이 작업을 수행하는 방법입니다 virtualenv venv, source venv/bin/activate. 항상 virtualenv를 사용 하고 싶지 않을 수도 있으며,이 방법을 사용하면 프롬프트 사용시 프롬프트가 접두어로 표시 (venv)됩니다.
nyuszika7 시간

2
@ nyuszika7h virtualenv 사용법을 알고 있습니다. 그러나 이것은 실제로 질문에 대답하며 매우 깔끔한 솔루션입니다.
itsafire

8
@itsafire "우리"는 누구입니까? 나는 당신이 en.wikipedia.org/wiki/Weasel_word
nyuszika7h

3
어쨌든, 나는 이것이 "신선한 해결책"이 아니라고 동의한다. 무의미한 해킹입니다.
nyuszika7h

19

-t옵션 ( --target)을 지정하여 대상 디렉토리를 지정할 수 있습니다 . 자세한 내용 pip install --help은 참조하십시오. 이것이 필요한 명령입니다.

pip install -t path_to_your_home package-name

예를 들어, mxnet을 설치하려면 $HOME디렉토리에 다음을 입력하십시오.

pip install -t /home/foivos/ mxnet

오류가 발생했습니다 distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base. 무슨 뜻인가요?
Anthony Kong

관련 토론은 github.com/pypa/pip/issues/3826 을 확인하십시오 . 나는 이것에 대해 더 이상 아무것도 모른다. 그러나 나는 내 환경에서 문제가 발생하지 않았다.
Foivos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.