pythonパッケージをダウンロードする最良の方法は何ですか?また、別のマシンにオフラインインストールするためのpypiからの依存関係は何ですか? pipまたはeasy_installでこれを行う簡単な方法はありますか?インターネットに接続されていないFreeBSDボックスに要求ライブラリをインストールしようとしています。
パッケージが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などをプリインストールする必要があります)。
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をインストールできます。
オフライン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_packages {Flask-0.10.1.tar.gz、...}]
パッケージのチェックリスト
pip list
注:2017年と同様、python 3を使用することをお勧めします。このコマンドでpython 3 virtualenvを作成できます。
virtualenv -p python3 envname
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.gz
でtar -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
を実行して、ライブラリとその依存関係をインストールします
tarball をダウンロードし、FreeBSDマシンに転送して抽出し、その後python setup.py install
を実行して完了です!
編集:それを追加するだけで、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-bundles
Pip 8.1.2では、pip download -r requ.txt
を使用して、ローカルマシンにパッケージをダウンロードできます。
同様の問題がありました。そして、私はpypiから行うのと同じ方法でインストールする必要がありました。
私は次のことをしました:
インターネットにアクセスできるマシン内のすべてのパッケージを保存するディレクトリを作成します。
mkdir -p /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
パッケージディレクトリをtarし、インターネットにアクセスできないマシンにコピーします。その後、
cd /path/to/packages/
tar -cvzf packages.tar.gz . # not the . (dot) at the end
packages.tar.gzを、インターネットにアクセスできない宛先マシンにコピーします。
インターネットにアクセスできないマシンで、次の手順を実行します(現在のマシンで/ 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
最後に、パッケージのインストールに何らかの形式の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