오프라인으로 패키지를 설치하는 방법?


160

파이썬 패키지를 다운로드하는 가장 좋은 방법은 무엇입니까? 다른 컴퓨터에 오프라인으로 설치하기 위해 pypi와의 종속성은 무엇입니까? pip 또는 easy_install 로이 작업을 수행하는 쉬운 방법이 있습니까? 인터넷에 연결되지 않은 FreeBSD 상자에 요청 라이브러리를 설치하려고합니다.


답변:


77

패키지가 PYPI에 있으면 해당 패키지 및 해당 종속성을 일부 로컬 디렉토리로 다운로드하십시오. 예 :

$ mkdir / pypi && cd / pypi
$ ls -la
  -rw-r--r-- 1 pavel 직원 237954 4 월 19 일 11:31 Flask-WTF-0.6.tar.gz
  -rw-r--r-- 1 pavel 직원 389741 2 월 22 일 17:10 Jinja2-2.6.tar.gz
  -rw-r--r-- 1 pavel 직원 70305 4 월 11 일 00:28 MySQL-python-1.2.3.tar.gz
  -rw-r--r-- 1 pavel 직원 2597214 4 월 10 일 18:26 SQLAlchemy-0.7.6.tar.gz
  -rw-r--r-- 1 pavel 직원 1108056 2 월 22 일 17:10 Werkzeug-0.8.2.tar.gz
  -rw-r--r-- 1 pavel 직원 488207 4 월 10 일 18:26 boto-2.3.0.tar.gz
  -rw-r--r-- 1 pavel 직원 490192 Apr 16 12:00 flask-0.9-dev-2a6c80a.tar.gz

일부 패키지는 손으로 비슷한 모양의 타르볼에 보관해야 할 수도 있습니다. 더 최근의 (안정적이지 않은) 버전의 무언가를 원할 때 많이합니다. 일부 패키지는 PYPI에 없으므로 패키지에도 동일하게 적용됩니다.

에 올바르게 구성된 Python 응용 프로그램이 있다고 가정합니다 ~/src/myapp. 디렉토리에 있는 하나 이상의 항목을 언급 한 목록 ~/src/myapp/setup.py이 있습니다 . 이렇게 :install_requires/pypi

  install_requires=[
    'boto',
    'Flask',
    'Werkzeug',
    # and so on

여전히 해킹하면서 필요한 모든 종속성으로 앱을 실행하려면 다음과 같이하십시오.

$ cd ~ / src / myapp
$ python setup.py develop --always-unzip --allow-hosts = 없음 --find-links = / pypi

이렇게하면 소스 디렉토리에서 앱이 바로 실행됩니다. 사물을 해킹 한 다음 아무 것도 재구성하지 않고 앱을 다시 실행할 수 있습니다.

앱과 그 의존성을 현재 파이썬 환경에 설치하려면 다음과 같이하십시오.

$ cd ~ / src / myapp
$ easy_install --always-unzip --allow-hosts = 없음 --find-links = / pypi

두 경우 모두 /pypi디렉토리에 하나 이상의 종속성이 없으면 빌드가 실패합니다 . 인터넷에서 누락 된 항목을 무차별하게 설치하려고 시도하지 않습니다.

글로벌 Python 환경을 오염시키지 않으려면 활성 가상 환경 을 호출 setup.py develop ...하고 easy_install ...활성화하는 것이 좋습니다 . 그것은 갈 길입니다 (virtualenv입니다). 전역 파이썬 환경에 아무것도 설치하지 마십시오.

앱을 구축 한 머신이 구축하려는 머신과 동일한 아키텍처를 갖는 경우 모든 가상 환경 디렉토리를 대상으로 할 수 있습니다 easy_install. tarballing 직전에 가상 환경 디렉토리를 재배치 가능하게 만들어야합니다 ( --relocatable 옵션 참조 ). 참고 : 대상 컴퓨터에는 동일한 버전의 Python이 설치되어 있어야하며 응용 프로그램에 C 기반 종속성이 사전 설치되어 있어야합니다 (예 : PIL에 의존하는 경우 libpng, libjpeg 등이 사전 설치되어 있어야 함) .


3
대신 --allow-hosts=None스위치를 사용할 수 있습니다--no-index
romor

올바르게 구성된 Python 애플리케이션을 작성하는 방법을 자세히 설명해 주시겠습니까?
psr

3
@PrabhjotRai 참조하시기 바랍니다 packaging.python.org/distributing
Pavel Repin

300

pip download명령을 사용하면 패키지를 설치하지 않고도 다운로드 할 수 있습니다.

pip download -r requirements.txt

(이전 버전의 pip에서는 철자가되었습니다 pip install --download -r requirements.txt.)

그런 다음 pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt네트워크에 액세스하지 않고도 다운로드 한 sdist를 설치하는 데 사용할 수 있습니다 .


이 문제는 종속성에 다른 종속성이있을 수 있으며 다운로드되지 않습니다.
vikki

뱀 바구니 (핍 위에 구축)는 종속성의 종속성도 다운로드합니다.
vikki

14
@vikki 사실이 아닙니다. "pip install --download"도 종속성을 다운로드하므로 요구 사항에 추가 종속성이있는 경우에도 위 명령이 올바르게 작동합니다. 뱀 바구니는 다른 유용한 일을 할 수도 있지만 (사용하지는 않았지만) 그런 이유로 반드시 필요하지는 않습니다.
Carl Meyer

6
@vikki 나는 당신이 말하는 것을 이해하지만 그것이 사실이 아니라고 말하고 있습니다 :-) 동일한 주장을 다시 게시하기 전에 실제로 시도해야합니다. 필자는 requirements.txt에 "pytest"를 넣고 "pip install --download. -r requirements.txt"를 실행 한 다음 pytest와 setup.py 종속 항목 인 "py"에 대해 sdist를 다운로드했습니다.
Carl Meyer

3
: 나는 그것이해야한다고 생각 --find-links file:/path/to/some/dir/그렇지 않으면 실패 할 수 있습니다 - 당신은 다운로드 핍의 동일한 버전을 설치해야합니다
A. Binzxxxxxx

56

python libs 및 해당 종속 항목을 오프라인으로 설치하려면 동일한 os, 네트워크 연결 및 python이 설치된 머신에서 다음 단계를 완료하십시오.

1) requirements.txt비슷한 내용 의 파일을 만듭니다 (참고-다운로드하려는 라이브러리입니다).

Flask==0.12
requests>=2.7.0
scikit-learn==0.19.1
numpy==1.14.3
pandas==0.22.0

요구 사항 파일을 작성하기위한 한 가지 옵션은을 사용하는 것 pip freeze > requirements.txt입니다. 환경의 모든 라이브러리가 나열됩니다. 그런 다음 requirements.txt불필요한 항목으로 이동하여 제거 할 수 있습니다.

2) mkdir wheelhouse && pip download -r requirements.txt -d wheelhouselibs와 그 의존성을 디렉토리로 다운로드하는 명령 을 실행하십시오.wheelhouse

3) requirements.txt를 wheelhouse디렉토리에 복사

4) 보관 조타실로 wheelhouse.tar.gztar -zcf wheelhouse.tar.gz wheelhouse

그런 다음 wheelhouse.tar.gz대상 컴퓨터에 업로드 하십시오.

1) tar -zxf wheelhouse.tar.gz파일을 추출하기 위해 실행

2) pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouselibs와 그 의존성을 설치하기 위해 실행


6
이것은 초보자를위한 적절한 단계를 가진 가장 명확한 대답입니다. 감사합니다
kumarharsh

이것은 내가 지금까지 본 가장 파이썬적인 방법입니다. 감사!
peluzza

2
그러나 당신의 지시에 따라, pip install결국, 그것은 말합니다 : 오류 : 요구 사항을 충족시키는 버전을 찾을 수 없습니다 ..`
DennisLi

@DennisLi 파이썬과 핍 버전은 무엇입니까?
chaokunyang

pip3을 사용하여 pandas 0.2
DennisLi

13

오프라인 파이썬. 이를 위해 virtualenv (절연 된 Python 환경)를 사용합니다.

1) pip를 사용하여 virtualenv를 온라인으로 설치하십시오.

pip install virtualenv --user

또는 whl을 사용하여 오프라인 :이 링크 로 이동하여 마지막 버전 (.whl 또는 tar.gz)을 다운로드 한 후 다음 명령으로 설치하십시오.

pip install virtualenv-15.1.0-py2.py3-none-any.whl --user

를 사용 --user하면을 사용할 필요가 없습니다 sudo pip….

2) virtualenv 사용

온라인 머신에서 터미널 cd이 있는 디렉토리를 선택 하고이 코드를 실행하십시오 :

python -m virtualenv myenv
cd myenv
source bin/activate
pip install Flask

모든 패키지를 설치 한 후 requirements.txtvirtualenv가 활성화 된 상태 에서 생성해야합니다.

pip freeze > requirements.txt

새 터미널을 열고 같은 다른 환경을 만듭니다 myenv2.

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
ls

지금 당신은 오프라인 폴더로 이동 할 수있는 사용자 requirements.txttranferred_packages폴더가 있습니다에 있습니다. 다음 코드로 패키지를 다운로드하여 모든 tranferred_packages폴더에 넣으십시오 .

pip download -r requirements.txt

오프라인 폴더를 오프라인 컴퓨터로 가져간 다음

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
cd offline
pip install --no-index --find-links="./tranferred_packages" -r requirements.txt

오프라인 폴더에있는 내용 [requirements.txt, tranferred_packages {Flask-0.10.1.tar.gz, ...}]

패키지 확인 목록

pip list

참고 : 우리는 2017 년에 파이썬 3을 사용하는 것이 좋습니다.이 명령으로 파이썬 3 virtualenv를 만들 수 있습니다.

virtualenv -p python3 envname

2
여기에 단계가 없거나 "난독 화"된 것으로 보이며 '비활성화'와 '파이프 동결'이 나타납니다 ... cd 오프라인 및 ./tranferred_packages가 어디에서나 나타납니다-분명히 정리해야합니까?
Hannu

어쩌면 '간단한 게시물을 원했습니다', '그 과정은 복잡했고 모든 단계를 작성할 수는 없었습니다 (YouTube에서만 가능)'를 고려해야합니다.
cyera

이것이 가장 좋은 답변입니다. 많은 도움
webofmars

tranferred_packages 폴더를 설정하는 방법에 대해 말한 것이 가장 좋습니다. 중요한 단계없이, -1
Zim

8

tarball을 다운로드 하여 FreeBSD 머신으로 전송하고 압축을 풀면 실행 python setup.py install이 끝납니다!

편집 : 추가하면 pip로 tarball을 설치할 수도 있습니다.


1
모든 종속성은 어떻습니까? 그들을 해결하는 가장 좋은 방법은 무엇입니까? 종속성을 수동으로 설치해야합니까?
Chris Drantz 2016 년

네, 불행히도 제가 아는 유일한 방법입니다.
dav1d

8

프로세스를 단계별로 살펴 보겠습니다.

  1. 인터넷에 연결된 컴퓨터에서 폴더를 만듭니다.
   $ mkdir packages
   $ cd packages
  1. 명령 프롬프트 또는 쉘을 열고 다음 명령을 실행하십시오.

    원하는 패키지가 있다고 가정하십시오. tensorflow

    $ pip download tensorflow

  2. 이제 대상 컴퓨터에서 packages폴더를 복사 하고 다음 명령을 적용하십시오.

  $ cd packages
  $ pip install 'tensorflow-xyz.whl' --no-index --find-links '.'

가 있습니다 tensorflow-xyz.whl필요한 패키지의 원래 이름으로 대체해야합니다.


6

wheel컴파일 된 패키지 사용

묶음 :

$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ pip wheel -r requirements.txt --wheel-dir=$tempdir
$ cwd=`pwd`
$ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *)

tarball을 복사하고 설치하십시오 :

$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2)
$ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdir/*

참고 wheel바이너리 패키지는 여러 시스템에 적용되지 않습니다.

더 참조. 여기 : https://pip.pypa.io/en/stable/user_guide/#installation-bundles


1
Python 3.6을 사용하는 컴퓨터에서 번들로 묶고 Python 3.5를 사용하여 다른 시스템에서 압축을 때 문제가 발생했습니다. " <package> .whl은이 플랫폼에서 지원되는 휠이 아닙니다 ". 소스 및 대상 버전이 일부 패키지와 일치해야 할 수 있습니다.
Juuso Ohtonen

5

나는 비슷한 문제가 있었다. 그리고 나는 같은 방식으로 설치해야했습니다. 우리는 pypi에서합니다.

나는 다음과 같은 일을했다.

  1. 인터넷에 액세스 할 수있는 시스템에 모든 패키지를 저장할 디렉토리를 만드십시오.

    mkdir -p /path/to/packages/
  2. 경로에 모든 패키지를 다운로드

    pip download -r requirements.txt -d /path/to/packages
    
    Eg:- ls /root/wheelhouse/  # **/root/wheelhouse** is my **/path/to/packages/**
    total 4524
    -rw-r--r--. 1 root root   16667 May 23  2017 incremental-17.5.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   34713 Sep  1 10:21 attrs-18.2.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root 3088398 Oct 15 14:41 Twisted-18.9.0.tar.bz2
    -rw-r--r--. 1 root root  133356 Jan 28 15:58 chardet-3.0.4-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  154154 Jan 28 15:58 certifi-2018.11.29-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   57987 Jan 28 15:58 requests-2.21.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   58594 Jan 28 15:58 idna-2.8-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  118086 Jan 28 15:59 urllib3-1.24.1-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   47229 Jan 28 15:59 tqdm-4.30.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root    7922 Jan 28 16:13 constantly-15.1.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  164706 Jan 28 16:14 zope.interface-4.6.0-cp27-cp27mu-manylinux1_x86_64.whl
    -rw-r--r--. 1 root root  573841 Jan 28 16:14 setuptools-40.7.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   37638 Jan 28 16:15 Automat-0.7.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   37905 Jan 28 16:15 hyperlink-18.0.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   52311 Jan 28 16:15 PyHamcrest-1.9.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   10586 Jan 28 16:15 six-1.12.0-py2.py3-none-any.whl
  3. 패키지 디렉토리를 Tar하고 인터넷에 액세스 할 수없는 머신에 복사하십시오. 그런 다음

    cd /path/to/packages/
    tar -cvzf packages.tar.gz .  # not the . (dot) at the end

    인터넷에 액세스 할 수없는 대상 컴퓨터에 packages.tar.gz 를 복사하십시오 .

  4. 인터넷에 액세스 할 수없는 시스템에서 다음을 수행하십시오 ( 현재 시스템 의 tard 패키지를 / path / to / package / 에 복사했다고 가정 ).

    cd /path/to/packages/
    tar -xvzf packages.tar.gz
    mkdir -p $HOME/.config/pip/
    
    vi $HOME/.config/pip/pip.conf

    다음 내용을 붙여 넣어 저장하십시오.

    [global]
    timeout = 10
    find-links = file:///path/to/package/
    no-cache-dir = true
    no-index = true
  5. 마지막으로 virtualenv패키지를 설치하는 데 사용하는 것이 좋습니다 .

    virtualenv -p python2 venv # use python3, if you are on python3
    source ./venv/bin/activate
    pip install <package>

/ path / to / package / 디렉토리에있는 모든 모듈을 다운로드 할 수 있어야합니다 .

참고 : 옵션을 추가하거나 모듈 설치 방법을 변경할 수 없으므로이 작업 만 수행했습니다. 그렇지 않으면 내가 한 것

    pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt

3

Pip 8.1.2 pip download -r requ.txt의 경우 로컬 컴퓨터로 패키지를 다운로드 하는 데 사용할 수 있습니다 .

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