Programing

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

lottogame 2020. 2. 25. 22:00
반응형

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


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

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

pip install package_name

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


사용하다:

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

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


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

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

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

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


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

Linux 또는 OS X에서 :

pip install -U pip

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

python -m pip install -U pip

--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를 사용하는 것이 여전히 더 좋고 깔끔한 솔루션입니다!


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

패키지에 데이터 / 스크립트 / 실행 파일이없고 Python 파일을 사용한다고 가정하고 /python/packages/package_name( 사용할 /python/packages때와 같은 몇 가지 하위 디렉토리가 아닌 --prefix) one 명령을 사용할 수 있습니다.

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등)을 지정하지 않으면 패키지에 포함 된 모든 실행 파일 / 데이터 / 스크립트가 여전히 기본 위치로 이동합니다 ( 자세한 내용은 사용자 정의 설치 옵션 참조).


라이브러리를 원하는 곳에 정확히 설치하기 위해 터미널이있는 디렉토리를 찾은 다음 사용했습니다.

pip install mylibraryName -t . 

이 페이지에서 가져온 논리 : https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/download


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

pip install -t <direct directory> <package>

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

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

예 :

pip install --user python-memcached

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


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

pip install --prefix=$PREFIX_PATH package_name

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


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.


pip install packageName -t pathOfDirectory

또는

pip install packageName --target pathOfDirectorty

에 대한 쓰기 권한이 없을 때 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 액세스 권한이없는 컴퓨터에서 비슷한 문제가있는 경우에 이것을 포함한다고 생각했습니다.


불행히도 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

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

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


pip install /path/to/package/

이제 가능합니다.

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

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


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

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

설명서를 따르고 ~ / .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를 제거하려고하면 제거 프로세스에 해당 패키지가 없다고 알려줍니다 .... 무언가 잘못되었지만 패키지가 사전 정의 된 위치로 이동합니다.

참고 URL : https://stackoverflow.com/questions/2915471/install-a-python-package-into-a-different-directory-using-pip



반응형