pip를 사용하여 Python 패키지를 다른 디렉토리에 설치 하시겠습니까?


435

명백한 대답은 virtualenv와 virtualenvwrapper를 사용하는 것임을 알고 있지만 여러 가지 이유로 나는 그것을하고 싶지 않습니다.

명령을 어떻게 수정합니까?

pip install package_name

pip기본 이외의 패키지 를 설치하려면 site-packages?



2
이제 두 번째 질문 : 사용자 정의 디렉토리에 이미 설치하는 경우 사용자 정의 pip가 아닌 디렉토리에서 이전 버전을 제거하지 않는 방법 . 예를 들어, 쓰기 권한이없는 시스템 전체의 것입니다. 지금까지 나는 이것을 가지고 이걸 뽑아 냈습니다 easy_install.
— Tomasz Gandor

2
@TomaszGandor --ignore-installed옵션을 사용하면 pip가 이미 설치된 패키지를 제거하지 못하게해야 한다고 생각 합니다.
— Piotr Dobrogost

죄송합니다. pip를 처음 사용하지만 귀하의 질문은 "pi를 다른 버전의 python에 설치하는 방법"과 같은 질문입니까? 파이썬 3.4와 3.5가 있지만 pip 설치가 파이썬 3.5로 가고 싶습니다.
— Charlie Parker

@Charlie Nope, 다른 질문. 설치 / 의도에 대해서는 잘 모르지만 일반적으로 virtualenvwrapper를 사용하고 다음과 같은 가상 환경을 만들 것입니다.mkvirtualenv --python=/usr/bin/python3.5 env_name
— Monika Sulik

답변:


334

사용하다:

pip install --install-option="--prefix=$PREFIX_PATH" package_name

--ignore-installed이 새로운 접두사를 사용하여 모든 종속성을 강제로 다시 설치하는 데 사용할 수도 있습니다 . --install-option여러 번 사용 하여 사용할 수 있는 옵션을 추가 할 수 있습니다 python setup.py install( --prefix아마도 원하는 것이지만 사용할 수있는 옵션이 많이 있습니다).


5
이 작업을 수행하는 경우 pip freeze대체 디렉토리를 볼 수있는 방법이 있습니까?
— Russ

7
핍 동결은 경로를 확인하므로, 만약 당신이 좋아 PYTHONPATH=$PREFIX_PATH/lib/python2.6/site-packages pip freeze한다면 그것들을보아야합니다.
— Ian Bicking

4
사용하면 --prefix=$PREFIX_PATH시스템 특정 접미사가 추가되어 ( \Lib\site-packages예를 들어 Windows에서) 설치 디렉토리를 완전히 제어 할 수없는 것 같습니다 . 특정 디렉토리를 지정하는 방법이 있습니까?
— Piotr Dobrogost 2016 년

1
@ Piotr : 예 내 대답이 있습니다. '-접두사'를 사용하는 것은 다소 거칠지 만 순수한 파이썬이 /usr/local/lib/pythonX.Y/site- 대신 /usr/lib/pythonX.Y/site-packages 아래로 가고 싶다면 잘 작동합니다. 패키지.
— Anthon

80
4 년 전 나쁜 대답은 아니지만 --target 옵션이 현재 존재합니다.
— Tritium21

545

--target 스위치는 당신이 찾고있는 것입니다 :

pip install --target=d:\somewhere\other\than\the\default package_name

그러나 당신은 여전히 추가 할 필요 d:\somewhere\other\than\the\default에 PYTHONPATH실제로 위치에서 사용할 수 있습니다.

-t, --target <dir> <dir>에
패키지를 설치하십시오. 기본적으로 이것은 <dir>의 기존 파일 / 폴더를 대체하지 않습니다.
<up>의 기존 패키지를 새 버전으로 바꾸려면 --upgrade를 사용하십시오.


대상 스위치를 사용할 수없는 경우 pip를 업그레이드하십시오.

Linux 또는 OS X에서 :

pip install -U pip

Windows에서 ( 문제가 해결됩니다 ) :

python -m pip install -U pip

8
@DanH 실행 pip install --upgrade pip!
— r3m0t

16
이것은 정답입니다. 수락 된 답변 후에 옵션이 약간 추가되었습니다.
— bukzor

5
--install-option="--prefix=$PREFIX_PATH"@Ian Bicking과 --target=$PATH옵션 의 차이점은 무엇입니까 ?
— Hibou57

6
targetpip 옵션이며 입력 한 모든 항목이에 install-option전달됩니다 setup.py install command. 기본적 target으로 사용자 정의 사이트 패키지 위치입니다.
— Janusz Skonieczny

10
사용 --target이 지정된 접두사의 모든 포함 스크립트 / 데이터 파일을 설치하지 않습니다 때문에, 부분적으로 설치 될 수 있습니다. 그것은 지나가는 것 같아 --prefix함께 --install-option사용 된 설치가 접두사를 완벽하게 제어 할 수있는 유일한 올바른 방법입니다.
— Kenneth Hoste

74

--target옵션 또는 옵션 대신 https://github.com/pypa/pip/issues/446--install-options 에서이 문제에 관한 버그에 대한 토론에서 다음이 잘 작동한다는 것을 알았습니다 .

PYTHONUSERBASE=/path/to/install/to pip install --user

(또는이 설정 PYTHONUSERBASE을 사용하여 명령을 실행하기 전에 사용자 환경에서 디렉토리 export PYTHONUSERBASE=/path/to/install/to)

이것은 매우 유용하게 사용 --user옵션을하지만, 할을 알려줍니다 bin, lib, share당신이 아닌 사용자 정의 접두사에서 기대와 다른 디렉토리를 $HOME/.local.

그럼 당신은 당신이를 추가 할 수 있습니다 PATH, PYTHONPATH당신을 일반 설치 디렉토리로 및 기타 변수.

시스템 제공 버전을 무시 하기 위해이 패키지가 종속 된 패키지가 디렉토리 에 최신 버전을 설치해야하는 경우 --upgrade및 --ignore-installed옵션 을 지정해야 할 수도 있습니다 PYTHONUSERBASE.

전체 예 :

PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy

..to를 설치 scipy하고 numpy당신이 다음에 포함 할 수있는 디렉토리에 최신 버전의 패키지 PYTHONPATH같은 (사용 bash는이 예에 CentOS 6에 파이썬 2.6을) :

export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH
export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH

virtualenv를 사용하는 것이 여전히 더 좋고 깔끔한 솔루션입니다!


4
이것은 Docker 컨테이너에서 실행되는 Travis CI와 함께 작동했지만 --install-option = "-prefix = $ PREFIX_PATH"솔루션은 그렇지 않았습니다.
— 32 비트

1
Noobie 질문, /binpip 폴더 가 얼마나 중요한지 , 그렇지 않은 --user것처럼 만듭니다 . --PREFIX--target
— Jonathan

1
패키지가 전역 Python으로 설치되어 있으면 --ignore-installed필요합니다.
— George Sovetov

1
이 옵션은 --editable로컬 설치 와도 호환 됩니다.
— mdh

1
이 옵션은 루트가 아닌 다른 사용자를 위해 수퍼 유저로 패키지를 설치하는 데 편리합니다 su(예 : 컨테이너에 문제가있을 수 있음).
— mdh

43

파이썬 패키지 설치에는 종종 순수한 파이썬 파일 만 포함됩니다. 패키지에 데이터, 스크립트 및 / 또는 실행 파일이 포함 된 경우 순수 Python 파일과 다른 디렉토리에 설치됩니다.

패키지에 데이터 / 스크립트 / 실행 파일이없고 파이썬 파일을 /python/packages/package_name(및 사용할 /python/packages때와 같은 몇 가지 하위 디렉토리가 아닌) 원하는 것으로 가정하면 --prefixone time 명령을 사용할 수 있습니다.

pip install --install-option="--install-purelib=/python/packages" package_name

패키지의 전부 (또는 대부분)를 원하는 경우 다음 ~/.pip/pip.conf을 포함하도록 편집 할 수 있습니다.

[install]
install-option=--install-purelib=/python/packages

그렇게하면 반복해서 지정할 필요가 없습니다.

추가 설치 옵션 ( --prefix/ --install-data/ --install-scripts등)을 지정하지 않으면 패키지에 포함 된 모든 실행 파일 / 데이터 / 스크립트가 기본 위치로 이동합니다 ( 자세한 내용은 사용자 정의 설치 옵션 참조).


1
구성 파일의 큰 장점. --prefix홈 디렉토리의 공유 서버에 "로컬"디렉토리가 있고 easy_install로 이동하기 전에 접두사로 사용 되었기 때문에 개인적으로 거기를 지정합니다 pip. 시스템 $PATH및 $PYTHONPATH이전에 구성되었습니다. install-option=--install-purelib=/blah이 새로운 target=/blah옵션 / 스위치 대신에 . 그것은 또한 좋은, 그러나 때때로 당신은 단지 교체가 필요 --prefix당신이 사용하는 거라고, setup.py나 easy_install.
— Tomasz Gandor


18

-t 옵션을 언급 한 사람은 없지만 가장 쉬운 방법은 다음과 같습니다.

pip install -t <direct directory> <package>

8
-t옵션의 짧은 버전입니다 --target다른 답변 (에 설명 된 옵션 stackoverflow.com/a/19404371/594053 :)
— MattiSG

14

@Ian Bicking의 답변에 한 점을 추가하십시오.

은 Using --user하나가 원격 서버 (sudo는 사용자 권한없이) 자신의 홈 디렉토리에 일부 파이썬 패키지를 설치하고자하는 경우에도 작업을 설치된 디렉토리를 지정하는 옵션을 선택합니다.

예 :

pip install --user python-memcached

이 명령은 PYTHONPATH에 나열된 디렉토리 중 하나에 패키지를 설치합니다.


14

python3.5 및 pip 9.0.3으로 이러한 옵션을 테스트했습니다.

pip install --target / myfolder [패키지]

/ myfolder 아래에 종속성을 포함한 모든 패키지를 설치합니다. 종속 패키지가 이미 Python의 다른 곳에 설치되어 있음을 고려하지 않습니다. / myfolder / [package_name]에서 패키지를 찾을 수 있습니다. Python 버전이 여러 개인 경우에는이를 고려하지 않습니다 (패키지 폴더 이름에 Python 버전 없음).

pip install --prefix / myfolder [패키지]

확인은 이미 설치된 종속성입니다. /myfolder/lib/python3.5/site-packages/[packages]에 패키지를 설치합니다

pip install --root / myfolder [패키지]

--prefix와 같은 종속성을 확인하지만 설치 위치는 /myfolder/usr/local/lib/python3.5/site-packages/[package_name]입니다.

pip install --user [패키지]

$ HOME에 패키지를 설치합니다 : /home/[USER]/.local/lib/python3.5/site-packages 파이썬은이 .local 경로에서 자동으로 검색하므로 PYTHONPATH에 넣을 필요가 없습니다.

=> 대부분의 경우 --user가 가장 적합한 옵션입니다. 어떤 이유로 홈 폴더를 사용할 수없는 경우 --prefix.


Python 2.7.16에서 실행되는 --target (또는 --prefix)는 Jinja2-2.10.1.dist-info /를 설치하는 반면 install --install-option = "-prefix는 Jinja2-2.10.1-py2를 설치합니다. .7.egg-정보는 /, 내가 실제로 원했던 인
— 그렉 도허티

13

최신 버전 pip(8 이상)은 다음 --prefix옵션을 직접 사용할 수 있습니다 .

pip install --prefix=$PREFIX_PATH package_name

여기서 $PREFIX_PATHlib, bin 및 기타 최상위 폴더가있는 설치 접두사입니다.


10
pip install packageName -t pathOfDirectory

또는

pip install packageName --target pathOfDirectorty

4

쓰기 권한이 없을 때 IPython을 설치하는 데 문제가 있었으므로 이미 좋은 조언을 추가하려면/usr/local .

pip는 distutils를 사용하여 설치를 수행하며이 스레드 는 sys.prefix설정 에 따라 문제가 발생할 수있는 방법에 대해 설명합니다 .

IPython 설치가 Permission denied 로 '/ usr / local / share / man / man1'에 쓰려고 할 때 문제가 발생했습니다 . 설치가 실패함에 따라 bin 디렉토리에 IPython 파일을 쓰지 않는 것 같습니다.

"--user"를 사용하여 파일을 ~ / .local에 썼습니다. $ PATH에 ~ / .local / bin을 추가하면 거기에서 "ipython"을 사용할 수 있습니다.

그러나 많은 사용자를 위해 이것을 설치하려고하는데 /usr/local/lib/python2.7디렉토리 에 대한 쓰기 권한이 부여되었습니다 . 아래에 "bin"디렉토리를 만들고 distutils에 대한 지시문을 설정했습니다.

vim ~/.pydistutils.cfg

[install]
install-data=/usr/local/lib/python2.7
install-scripts=/usr/local/lib/python2.7/bin

그런 다음 ( -I이전 실패 /.local 설치에도 불구하고 강제 설치에 사용됨) :

pip install -I ipython

그런 다음에 추가 /usr/local/lib/python2.7/bin했습니다 $PATH.

다른 사람이 sudo 액세스 권한이없는 컴퓨터에서 비슷한 문제가있는 경우를 대비하여 이것을 포함한다고 생각했습니다.


2

불행히도 python과 함께 brew를 사용하는 경우 pip / pip3에는 매우 제한된 옵션이 제공됩니다. 위에서 언급 한대로 --install-option, --target, --user 옵션이 없습니다.

pip install --user에
대한 참고 사항 일반적인 pip install --user는 추출 된 Python에 대해 비활성화되어 있습니다. 이는 Homebrew가 패키지 접두사를 설정하는 distutils.cfg를 작성하기 때문에 distutils의 버그 때문입니다. 실행 가능한 스크립트를 ~ / Library / Python /./ bin에 넣는 가능한 해결 방법은 다음과 같습니다. python -m pip install --user --install-option="--prefix=" <package-name>

이 라인은 매우 번거로울 수 있습니다. 관리를 위해 pyenv를 사용하는 것이 좋습니다. 당신이 사용하는 경우

brew upgrade python python3

아이러니하게도 실제로 pip 기능을 다운 그레이드 합니다.

(Mac OSX의 pip에 --target 옵션이 없기 때문에이 답변을 게시하고 수정하는 데 몇 시간을 보냈습니다)


명백한 접두사를 가진이 대답은 ignore-installed이전의 노력으로 저에게 python -m pip install --user --install-option="--prefix='/myFunkyApp/lib'" --ignore-installed <package-name>
— Jeremy Jones

0

v1.5.6Python에서 pip v2.7.3(GNU / Linux) --root를 사용하면 옵션을 사용하면 특정 패키지 옵션에 관계없이 전역 설치 접두사를 지정할 수 있습니다. Fi를 사용해보십시오.

$ pip install --root=/alternative/prefix/path package_name

0

설명서를 따르고 ~ / .pip / pip.conf 파일을 만드는 것이 좋습니다. 문서에서 지정된 헤더 디렉토리가 누락되어 다음과 같은 오류가 발생합니다.

error: install-base or install-platbase supplied, but installation scheme is incomplete

conf 파일의 전체 작업 내용은 다음과 같습니다.

[install]
install-base=$HOME
install-purelib=python/lib
install-platlib=python/lib.$PLAT
install-scripts=python/scripts
install-headers=python/include
install-data=python/data

불행히도 설치할 수는 있지만 pip를 제거하려고하면 제거 프로세스에 해당 패키지가 없다고 알려줍니다 .... 무언가 여전히 잘못되었지만 패키지가 사전 정의 된 위치로 이동합니다.


0

pip install /path/to/package/

이제 가능합니다.

이것과 -e또는 --editable플래그를 사용하는 것의 차이점 -e은 패키지를 파이썬 경로에 설치하지 않고 패키지가 저장된 위치 (예 : 다운로드 폴더)에 대한 링크입니다.

즉, 패키지를 다른 폴더로 삭제 / 이동하면 사용할 수 없습니다.


이 질문에 대답하지 않습니다
— Clintm

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.