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\default
에 PYTHONPATH
실제로 위치에서 사용할 수 있습니다.
-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_PATH
lib, 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.6
Python에서 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를 제거하려고하면 제거 프로세스에 해당 패키지가 없다고 알려줍니다 .... 무언가 잘못되었지만 패키지가 사전 정의 된 위치로 이동합니다.
'Programing' 카테고리의 다른 글
폴더에있는 모든 파일의 파일 이름 가져 오기 (0) | 2020.02.25 |
---|---|
통합 관리 파이프 라인 모드에 적용되지 않는 ASP.NET 설정이 감지되었습니다. (0) | 2020.02.25 |
Android View의 상단과 하단에 테두리를 추가하는 쉬운 방법이 있습니까? (0) | 2020.02.25 |
jQuery.Ajax로 파일 다운로드 (0) | 2020.02.25 |
리눅스 명령 줄에서 여러 파일의 문자열을 바꾸는 방법 (0) | 2020.02.25 |