2016-04-19 24 views
10

私たちはインターネットなしでいくつかのPythonパッケージをインストールしようとしています。インターネットなしでpythonパッケージをインストールし、ソースコードを.tar.gzと.whlとして使用する

For ex : python-keystoneclient 

私たちはhttps://pypi.python.org/pypi/python-keystoneclient/1.7.1からダウンロードしたパッケージをサーバーに保管しています。

しかし、tar.gzと.whlパッケージをインストールする際には、まずインストールする依存パッケージを探しています。サーバーにインターネット接続がないので、サーバーに障害が発生しています。 EXのために

:私は上記のリストから1つによって、パッケージを1つずつインストールしようとするのpython-keystoneclientのために我々は再びそのネストされた依存関係を探して、以下の依存パッケージ

stevedore (>=1.5.0) 
six (>=1.9.0) 
requests (>=2.5.2) 
PrettyTable (<0.8,>=0.7) 
oslo.utils (>=2.0.0) 
oslo.serialization (>=1.4.0) 
oslo.i18n (>=1.5.0) 
oslo.config (>=2.3.0) 
netaddr (!=0.7.16,>=0.7.12) 
debtcollector (>=0.3.0) 
iso8601 (>=0.1.9) 
Babel (>=1.3) 
argparse 
pbr (<2.0,>=1.6) 

を持っています。

私たちがリストできる方法はありますかALL python-keystoneclientのようなpythonモジュールをインストールするための依存パッケージ。

+0

これにはコンテナを使用する運が良いかもしれません。 –

答えて

19

これは私がこのケースを処理する方法である:

私は、インターネットへのアクセス権を持っているマシンで:次に

mkdir keystone-deps 
pip download python-keystoneclient -d "/home/aviuser/keystone-deps" 
tar cvfz keystone-deps.tgz keystone-deps 

その先のマシンにtarファイルを移動インターネットにアクセスできず、次の操作を実行しています:

tar xvfz keystone-deps.tgz 
cd keystone-deps 
pip install python_keystoneclient-2.3.1-py2.py3-none-any.whl -f ./ --no-index 
+2

これはpipの "download"オプションで更新することができます。さらに、ピップオプション "no-index"の説明があるといいでしょう。 – fffred

+0

mahine pipコマンドを実行していないとどうなりますか? –

+0

https://bootstrap.pypa.io/get-pip.py –

0

pipdeptreeは、依存関係ツリーの形でvirtualenvにインストールされたpythonパッケージを表示するためのコマンドラインユーティリティです。 ちょうどそれを使用します。 https://github.com/naiquevin/pipdeptree

3

同様の状況があります本番マシンがインターネットにアクセスできない職場では、したがって、すべてをオフラインおよびオフホストで管理する必要があります。あなたがインターネットに接続されたホスト上で実行する小さなユーティリティです

  1. basket:ここ

    は、私は成功の様々な量と試みたものです。パッケージをインストールしようとする代わりに、パッケージをダウンロードし、ディレクトリにインストールするのに必要なものをすべてダウンロードします。このディレクトリをターゲットマシンに移動します。長所:非常に簡単で使いやすく、サーバーの頭痛もありません。設定するポートはありません。短所:実際のショーストッパーはありませんが、最大のものは、あなたが持っている可能性があるバージョンを尊重しないことです。常にパッケージの最新バージョンをダウンロードします。

  2. ローカルのpypiサーバを実行します。 pypiserverdevpiです。 pypiserverは、インストールとセットアップが非常に簡単です。 devpiはもうちょっと詰まっています。彼らはどちらも同じことを行います - 実際のピピのプロキシ/キャッシュとして、そして自家製のパッケージのローカルピピサーバーとして機能します。 localshopは、私が探していたときに周囲になかった新しいものであり、同じ考えを持っています。どのように動作するかは、インターネットに接続されたマシンがこれらのサーバーに接続し、実際のリポジトリをキャッシュしてプロキシできるようにインターネットに接続されることです。

第二のアプローチでの問題は、あなたがPythonパッケージのリポジトリ全体に最大限の互換性とアクセスを取得しますが、あなたはまだわから任意の/すべての依存関係は、例えば(ターゲット・マシンにインストールされていることを確認する必要があるということですデータベースドライバのヘッダーとビルドツールチェーン)。さらに、これらのソリューションは、非ピポリポジトリ(githubでホストされているパッケージなど)には対応していません。

私は2番目のオプションで非常に遠くになったので、私は間違いなくそれをお勧めします。

最終的に、互換性の問題とライブラリに対処することに飽きてしまったので、サーカス全体を市販のドッカーコンテナに移行しました。

これは、事前に設定されたものすべてを出荷することを意味し、実際に本番マシンにインストールする必要はありません。また、私たちにとって最も頭痛のないソリューションでした。

pypiリポジトリをローカルドッカーイメージサーバに置き換えました。

関連する問題