web-dev-qa-db-ja.com

Pythonパッケージのオフラインインストール

pythonパッケージをダウンロードする最良の方法は何ですか?また、別のマシンにオフラインインストールするためのpypiからの依存関係は何ですか? pipまたはeasy_installでこれを行う簡単な方法はありますか?インターネットに接続されていないFreeBSDボックスに要求ライブラリをインストールしようとしています。

114
Chris Drantz

パッケージがPYPIにある場合は、パッケージとその依存関係をローカルディレクトリにダウンロードします。例えば。

 $ mkdir/pypi && cd /pypi
$ ls -la 
 -rw-r--r-- 1人のスタッフ237954 Apr 19 11:31 Flask-WTF-0.6 .tar.gz 
 -rw-r--r-- pavelスタッフ1人389741 2月22日17:10 Jinja2-2.6.tar.gz 
 -rw-r--r-- 1 pavel staff 70305 Apr 11 00:28 MySQL-python-1.2.3.tar.gz 
 -rw-r--r-- 1人のスタッフ2597214 Apr 10 18:26 SQLAlchemy-0.7.6.tar.gz 
 -rw-r--r-- 1人のパベルスタッフ1108056 2月22日17:10 Werkzeug-0.8.2.tar.gz 
 -rw-r--r-- 1人のパベルスタッフ488207 4月10日18:26 boto-2.3.0.tar.gz 
 -rw-r--r-- 1人のスタッフ490192 4月16日12:00フラスコ-0.9-dev-2a6c80a.tar.gz 

一部のパッケージは、手で似たようなtarballにアーカイブする必要があります。何かのより新しい(安定性の低い)バージョンが必要な場合は、多くのことを行います。一部のパッケージはPYPIにないため、同じことが適用されます。

~/src/myappに正しく形成されたPythonアプリケーションがあるとします。 ~/src/myapp/setup.pyには、install_requiresディレクトリにある1つまたは複数のものを示す/pypiリストがあります。そのようです:

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

必要なすべての依存関係を使用してアプリを実行し、ハッキングを続けたい場合は、次のようにします。

 $ cd〜/ src/myapp 
 $ python setup.py開発--always-unzip --allow-hosts = None --find-links =/pypi 

このようにして、アプリはソースディレクトリから直接実行されます。物事をハッキングしてから、何も再構築せずにアプリを再実行できます。

アプリとその依存関係を現在のpython環境にインストールする場合は、次のようにします。

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

どちらの場合も、/pypiディレクトリに1つ以上の依存関係が存在しない場合、ビルドは失敗します。インターネットから欠落しているものを無差別にインストールしようとはしません。

グローバルPython環境の汚染を避けるために、アクティブな 仮想環境 内でsetup.py develop ...およびeasy_install ...を呼び出すことを強くお勧めします。これは(virtualenvです)ほぼすべての方法です。グローバルPython環境には何もインストールしないでください。

アプリを構築したマシンが、デプロイ先のマシンと同じアーキテクチャを持っている場合、すべてをeasy_install- edした仮想環境ディレクトリ全体を単純にtarballできます。ただし、tarballする直前に、仮想環境ディレクトリを再配置可能にする必要があります( -relocatable オプションを参照)。 注:宛先マシンには、同じバージョンのPythonがインストールされている必要があります。また、アプリに含まれるCベースの依存関係も必要です。そこにもプリインストールする必要があります(たとえば、 PIL に依存する場合は、libpng、libjpegなどをプリインストールする必要があります)。

58
Pavel Repin

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をインストールできます。

223
Carl Meyer

オフラインpython。これを行うには、virtualenv(分離されたPython環境)を使用します

1)pipを使用してvirtualenvをオンラインでインストールします。

pip install virtualenv --user

または、whlを使用してオフラインにします。これに移動します link 、最後のバージョン(.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を生成する必要があるため、virtualenvがアクティブな間に、

pip freeze > requirements.txt

新しいターミナルを開き、myenv2のような別のenvを作成します。

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

オフラインフォルダ内の内容[requirements.txt、tranferred_pa​​ckages {Flask-0.10.1.tar.gz、...}]

パッケージのチェックリスト

pip list

注:2017年と同様、python 3を使用することをお勧めします。このコマンドでpython 3 virtualenvを作成できます。

virtualenv -p python3 envname
11
cyera

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

2)コマンドmkdir wheelhouse && pip download -r requirements.txt -d wheelhouseを実行して、ライブラリとその依存関係をディレクトリ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 wheelhouseを実行して、ライブラリとその依存関係をインストールします

7
chaokunyang

tarball をダウンロードし、FreeBSDマシンに転送して抽出し、その後python setup.py installを実行して完了です!

編集:それを追加するだけで、pipでtarballをインストールすることもできます。

7
dav1d

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

5
eshizhan

Pip 8.1.2では、pip download -r requ.txtを使用して、ローカルマシンにパッケージをダウンロードできます。

3
Umut Gunebakan

同様の問題がありました。そして、私は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. インターネットにアクセスできないマシンで、次の手順を実行します(現在のマシンで/ 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
    
  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
2
han solo