programing

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

sourcejob 2022. 11. 14. 21:43
반응형

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

python 패키지를 다운로드하는 가장 좋은 방법은 무엇이며, 다른 머신에 오프라인으로 설치하기 위한 pypi의 의존관계는 무엇입니까?이것을 pip 또는 easy_install로 간단하게 할 수 있는 방법이 있습니까?FreeB에 요청 라이브러리를 설치하려고 합니다.인터넷에 접속되어 있지 않다SD 박스

인터넷에 접속할 수 있는 시스템

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

네트워크에 접속하지 않고 다운로드한 모듈을 설치합니다.

오프라인으로 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사용자 환경의 모든 라이브러리가 나열됩니다. 다음 럼 에 then then 、 에 、 then 、 then 。requirements.txt불필요한 것은 제거한다.

2) 실행mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse와 그 에 wheelhouse

3) 요 .를 3 3 3 3 3 3 3 3 3 3 3 3 。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 wheelhouse와 그

패키지가 PYPI 상에 있는 경우 패키지와 그 의존관계를 로컬디렉토리에 다운로드합니다.예.

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

일부 패키지는 손으로 유사한 모양의 tarball에 보관해야 할 수 있습니다.좀 더 최신(안정성이 떨어지는) 버전을 원할 때 많이 합니다.일부 패키지는 PYPI에 포함되지 않으므로 동일한 내용이 적용됩니다.

Python에 올바른 의 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=None --find-pypi

이렇게 하면 앱이 원본 디렉토리에서 바로 실행됩니다.아무것도 재구축하지 않고 해킹을 하고 재실행할 수 있습니다.

현재 python 환경에 앱과 앱의 종속성을 설치하려면 다음과 같은 작업을 수행합니다.

$ cd ~ / src / myapp$ easy_install -- always - unzip --allow - hosts = None --find - pypi 。

모두 1개 에 존재하지 않으면 합니다./pypi디렉토리로 이동합니다.인터넷에서 누락된 것을 문란하게 설치하려고 시도하지 않습니다.

★★★★★★★★★★★★★★★★를 기동하는 것을 강하게 추천합니다.setup.py develop ... ★★★★★★★★★★★★★★★★★」easy_install ...글로벌 Python 환경을 오염시키지 않도록 하기 위해 활성 가상 환경 내에서 작업을 수행합니다.(virtual env가) 거의 성공입니다.글로벌 Python 환경에는 아무것도 설치하지 마십시오.

하고 싶은 과 같은 있는 가상 할 수 .easy_install- 모든 걸 다 했어.그러나 tarballing 직전에 가상 환경 디렉토리를 재배치할 수 있도록 설정해야 합니다(--relocatable 옵션 참조).메모: 대상 머신에 동일한 버전의 Python이 설치되어 있어야 하며, 어플리케이션의 C 기반 의존관계도 사전에 설치되어 있어야 합니다(예를 들어 PIL에 의존하는 경우 libpng, libjpeg 등).

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

  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는 필요한 패키지의 원래 이름으로 대체해야 합니다.

오프라인 python.이를 위해 virtualenv(분리된 Python 환경)를 사용합니다.

1) pip을 사용하여 virtualenv를 온라인으로 설치:

pip install virtualenv --user

또는 offline with 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.txt 되어 있는 " " " " " " 를 입력합니다.

pip freeze > requirements.txt

새로운 터미널을 오픈하여 같은 환경을 조성하다myenv2.

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

할 수 .이 에서는, 「」를 사용해 주세요.requirements.txt ★★★★★★★★★★★★★★★★★」tranferred_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

오프라인 [요건]폴더에 무엇이 있는지 확인합니다.txt, transferred_packages {Flask-0.10.1.tar.gz, ...}]

패키지 체크리스트

pip list

참고: 2017년에는 python 3을 사용하는 것이 좋습니다. 이 명령어로 python 3 virtualenv를 생성할 수 있습니다.

virtualenv -p python3 envname

저도 비슷한 문제가 있었어요.pypi에서와 같은 방법으로 설치를 해야 했습니다.

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

  1. 인터넷에 접속할 수 있는 머신내의 모든 패키지를 격납하는 디렉토리를 작성합니다.

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

편집: 다음을 시도할 수도 있습니다.

python3 -m pip wheel --no-cache-dir -r requirements.txt -w /path/to/packages
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
  1. 패키지 디렉토리를 tar하여 인터넷에 접속할 수 없는 머신에 복사합니다.그럼 하세요.

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

packages.tar.gz를 인터넷에 접속할 수 없는 수신처 머신에 복사합니다.

  1. 인터넷에 접속할 수 없는 머신에서는, 다음의 조작을 실시합니다(현재 머신의 /path/to/package/에 tar 패키지를 카피했다고 가정합니다).

    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
  1. 로든 사용할 것을 합니다.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

tarball을 다운로드하여 FreeB로 전송SD 머신과 추출 후 실행python setup.py install★★★★★★★★★★★★★★★★!

EDIT: 추가만 하면 pip을 사용하여 tarball을 설치할 수도 있습니다.

사용.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-disclosed

a가 @chaokunyang의 답변을 계속함에 따라 작업을 수행하는 스크립트를 여기에 넣습니다.

  1. 패키징할 라이브러리를 지정하는 "requirements.txt" 파일을 작성합니다.
  2. 모든 라이브러리를 포함하는 tar 파일을 만듭니다(패커 스크립트 참조).
  3. 생성된 tar 파일을 대상 시스템에 넣고 압축을 풉니다.
  4. 설치 스크립트를 실행합니다(이 스크립트는 tar 파일에도 포함되어 있습니다).

"requirements.txt" 파일

docker==4.4.0

패커측: 파일명: "create-offline-python3.6-dependencies-repository.sh"

#!/usr/bin/env bash

# This script follows the steps described in this link:
# https://stackoverflow.com/a/51646354/8808983

LIBRARIES_DIR="python3.6-wheelhouse"

if [ -d ${LIBRARIES_DIR} ]; then
    rm -rf ${LIBRARIES_DIR}/*
else
    mkdir ${LIBRARIES_DIR}
fi

pip download -r requirements.txt -d ${LIBRARIES_DIR}

files_to_add=("requirements.txt" "install-python-libraries-offline.sh")

for file in "${files_to_add[@]}"; do
    echo "Adding file ${file}"
    cp "$file" ${LIBRARIES_DIR}
done

tar -cf ${LIBRARIES_DIR}.tar ${LIBRARIES_DIR}

설치 측: 파일 이름: "install-python-libraries-offline.sh"

#!/usr/bin/env bash

# This script follows the steps described in this link:
# https://stackoverflow.com/a/51646354/8808983

# This file should run during the installation process from inside the libraries directory, after it was untared:
# pythonX-wheelhouse.tar -> untar -> pythonX-wheelhouse
# |
# |--requirements.txt
# |--install-python-libraries-offline.sh


pip3 install -r requirements.txt --no-index --find-links .

Pip 8.1.2의 경우pip download -r requ.txt로컬 머신에 패키지를 다운로드합니다.

휠 파일을 다운로드합니다(예: dlb-0.5.0-py3-none-any).Whl) Pypi에서

pip install dlb-0.5.0-py3-none-any.whl

Windows 의 경우는, 이하의 것을 사용하고 있습니다.

인터넷 접속

1. 임의의 이름으로 디렉토리를 만듭니다.'repo'로 작성했습니다.

2. 다음 명령을 사용하여 라이브러리를 다운로드합니다(다운로드하지 않습니다).

pip download libaray_name -d"C:\repo"

pip download openpyxl -d"C:\repo"
  1. 그러면 여러 개의 .whl 확장 파일을 찾을 수 있습니다.

  2. 요건 내의 모든 파일명을 복사합니다.txt 여기에 이미지 설명 입력

인터넷 접속 없음

  1. 이제 이 폴더와 파일을 인터넷에 연결되지 않은 PC로 이동하고 아래 명령을 실행합니다.
pip install -r 요건.txt --find-links=C:\repo --인덱스 없음

언급URL : https://stackoverflow.com/questions/11091623/how-to-install-packages-offline

반응형