web-dev-qa-db-ja.com

virtualenvをエクスポートするには?

私はvirtualenvは初めてですが、Django appと書いており、最終的にはなんとかデプロイする必要があります。

したがって、必要なライブラリをすべてインストールしたローカルの仮想環境でアプリが動作していると仮定しましょう。私が今やりたいのは、ある種のスクリプトを実行して、virtualenvを取得し、内部にインストールされているものを確認し、これらのライブラリをすべて他のマシンの新鮮なvirtualenvにインストールするスクリプトを生成することです。これをどのように行うことができますか?助けてください。

34
mnowotka

Virtualenvをコピーして貼り付けません。次のようにインストールされたすべてのパッケージのリストをエクスポートします-

pip freeze > requirements.txt

次に、requirements.txtファイルをコードをデプロイしたい場所に配置し、開発マシンで行ったことを実行します-

$ virtualenv <env_name>
$ source <env_name>/bin/activate
(<env_name>)$ pip install -r path/to/requirements.txt

そしてそこには、すべてのパッケージが正確なバージョンでインストールされています。

Fabric を調べて、次のような関数でこのタスクを自動化することもできます-

def pip_install():
    with cd(env.path):
        with prefix('source venv/bin/activate'):
            run('pip install -r requirements.txt')
71
Bibhas Debnath

同じパス上にある場合は、それをtarして別のマシンに抽出できます。すべての同じ依存関係、ライブラリなどがターゲットマシンで利用できる場合、動作します。

Virtualenvwrapperをインストールして、 cpvirtualenv を試すことができますが、開発者はここで注意することをお勧めします。

警告

仮想環境のコピーは十分にサポートされていません。各virtualenvにはパス情報がハードコーディングされており、特定のファイルを更新する必要があることをコピーコードが認識していない場合があります。注意して使用してください。

私はまだこれを十分にテストしていませんが、これがどれだけうまく(または不十分に)動作するかを知った後、ここで更新します。

0
Shon Feder