2017-08-21 13 views
2

オフラインマシン上の.yamlファイルからconda環境を作成したいとします(つまり、インターネットにアクセスできない)。オンラインマシンでは、これは完全に正常に動作します。 conda env create -f environment.yamlConda env from .yaml offline

ただし、パッケージが見つからないため、オフラインマシンでは機能しません。これはどうすればいいですか?

これは可能ではない場合は、オフラインマシン(condaとpipインストールされたパッケージの両方を含む)に完全なconda環境を取得する他の簡単な方法はありますか?

.tar.bz2ファイルからパッケージを1つずつインストールすると動作しますが、非常に面倒ですので、避けてください。

+0

これらは、condaがPyPIから取得するパッケージですか?インストールに標準の 'pip'を使わない特別な理由はありますか? – Anthon

+0

こんにちは、ありがとうございました!私はピップでそれらをインストールするとうまくいくだろうが、私はまた、パッケージを一つずつ通過することなくオフラインで行う方法を知らない。それについてのヒントは非常に感謝しています。 – lilaf

答えて

1

pipを使用してパッケージをインストールできる場合は、devpi、特にそのサーバーを確認する必要があります。 devpiは通常PyPIからインストールされたパッケージをキャッシュすることができるため、最初のインストール時にのみ実際にそれらを取得します。パッケージをdevpiサーバーから取得するには、pipを構成する必要があります。

あなたは、インターネットに接続されているマシンでなければならない手ですべてのパッケージとその依存関係一覧表示したくないので:

  • devpiサーバーをインストールする(Iは、ドッカーコンテナ内で実行されていることを持っています)
(あなたが全部タールすることができるかもしれません)devpiリポジトリを調べ、そこから出全て .tar.bz2.whlファイルを集め
  • インストールを実行します非接続されたマシンの

    • devpiサーバとクライアント
    • は、あなたが(devpi uploadを使用して)収集されたすべてのパッケージをアップロードするdevpiクライアントを使用してインストールしdevpiサーバ
    • にあなたが持っていることを確認してください配管は、devpiサーバーを見るために構成された
    • 実行pip、ローカルサーバー上のすべてのパッケージを検索します。

    devpiのでスピードアップとちょうどパッケージを生成することで、通常の依存関係として(つまりは、PyPIにアップロードされていない)プライベートパッケージをインストールし、それをアップロードする機能を横断すでに価値が小さな学習曲線を持っていますあなたのローカルのdevpiサーバー。

    +0

    お返事ありがとうございます!これはかなり興味深いように聞こえるが、私はそれが私のために働くより簡単な解決策を見つけたので、私はそれを試していない(下記の答えを参照)。あなたのソリューションははるかに安定しており、より一般化されていると思いますので、とにかくそれを受け入れます。私は将来すべてのプロジェクトに移行する長期的な解決策としてそれを試すかもしれません。 – lilaf

    0

    私は上記のAnthonののソリューションはかなり良いですが、念の誰に私のために働いた簡単な解決策に興味があることを推測する:

    私が最初condaのENVエクスポート>ファイルを使用して環境を指定.yamlファイルを作成しました。 yaml。 http://support.esri.com/en/technical-article/000014951の指示に従って、インストールされたcondaパッケージに必要なすべてのインストールファイルを自動的にダウンロードし、ファイルからチャネルを作成しました。そのために、上記のリンクのコードを、使用したcondaリストファイルの代わりに.yamlファイルを使用するように変更しました。さらに、pipインストールされたパッケージに必要なファイルを、.yamlファイルのpipエントリをループし、ピップダウンロードを使用してダウンロードして自動的にダウンロードしました。さらに、.yamlファイルから独立したcondaとpip要件リストを自動的に作成しました。次に、私は、オフラインフラグ付きのconda create、conda要件のあるファイル、および私のカスタムチャンネルを使用して環境を作成しました。最後に、ピップ要求ファイルをインストールしたpipインストールと、オプション--find-linksのpipインストールファイルを含むフォルダをインストールしました。

    それは私のために働いた。唯一の問題は、実行しているオペレーティングシステムとは異なるオペレーティングシステムを指定する必要がある場合にpipダウンロードでバイナリをダウンロードできることです。バイナリは利用できないパッケージもあります。目標マシンにいくつかの特徴がありますが将来的には問題になるかもしれませんので、私はAnthonが提案した解決策を検討する予定です。

    +0

    Nice solution Illaf。どのようにyamlファイルを修正しましたか?各依存関係にURLプレフィックスを追加するスクリプトを実行しましたか? – EB88

    関連する問題