2011-07-25 7 views
14

それで、私はちょっとばかりのアドオン/パッケージを持つPythonプログラムを手に入れました。私はそのプログラムをvirtualenvに配布してパッケージがバンドルされるようにしたいと思っています。しかし、プログラムはWindows用で、virtualenvの "再配置可能"機能はWindows上でサポートされていません(まだ実験中です)。仮想再配置のどの部分を変更する必要がありますか?

私はスクリプトを書くか、virtualenvを再配置するために絶対パス名を手動で変更する手順を書いています。

私の質問は、誰かがどこで絶対にvirtualenvの絶対パス名を探す必要があるのか​​知っていますか?私はPythonのパッケージングにはかなり新しいです。 activate.batスクリプトには絶対パス名が含まれていますが、個々のパッケージには絶対パス名がハードコードされてインストールされていますか?

セクションMaking Environments Relocatableには、virtualenvを単純に移動することはできないが、絶対パス名を含む場所は表示されない理由が説明されています。

+0

「現在の環境をリロケータブルにする」という現在の文書は、(正当な意味で):_ "警告: '--relocatable'オプションには現在いくつかの問題があり、すべての状況で動作することは保証されていません。このオプションは、将来のバージョンのvirtualenvでは廃止される可能性があります。」Python環境を再作成する(例えば、pip freeze/install requirementsを使用する)ことは、ポータブル/リロケータブルの1つを作成しようとするよりも常に望ましいでしょう。 – michael

答えて

15

これを手動で行うのではなく、freezeオプションをpipに設定して、要件ファイルを作成する方がよいでしょう。 1つのコマンドでvirtualenv全体を再構築できるようになりました。新しいものでは

pip freeze > stable-req.txt 

:古いvirtualenvのオン

pip install -r stable-req.txt 
+0

Will PIPを使っていくつかのアドオン(numpy、wxPython、PIL)をインストールすることができなかったので、easy_installやPIPでインストールできないと思われるようです – jmite

+0

ほとんどの人にはうまくいくようですが、Windowsインストーラを使ってenvにインストールしなければならなかったwxはpipやeasy_installでは検出されませんが、フリーズは素晴らしいツール、ありがとう! – jmite

+0

Windows(numpy、PILなど)で面倒だったパッケージのほとんどは.whlファイルを利用できます。最近のバージョンのpipを使用すると、 'pip install'は.whlファイルを見つけることができますt他のパッケージと同じように容易に設置できます。 –

7

仮想環境のディレクトリ{ENV}の場合は、次の手順を実行し

  1. 実行$ virtualenv --relocatable {ENV}
  2. 編集{ENV}/bin/activate、編集VIRTUAL_ENV(ライン〜42の周りには!)スクリプトを書くために探している場合、あなたはどちらかの輸出VIRTUAL_ENVシェル変数ことができるように、新しいディレクトリの場所

に一致するよう

  • お好みのVIMまたはエディタを使用して/ bin/onの編集を動的に実行することができます。

    これは私がセットアップした方法です。

     
    # env/bin/activate 
    BIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 
    # virtual env is at ./env 
    ENV_DIR=`dirname $BIN_DIR` 
    VIRTUAL_ENV=$ENV_DIR 
    export VIRTUAL_ENV 
    
  • 2

    virtualenv-toolsは、移動後に既存のvirtualenvの場所を更新するスクリプトです。 Windows上では役に立ちませんが、他の人にとっては役に立ちます。

    それは更新されます

    • virtualenvの起動スクリプト
    • virtualenvの中のスクリプトで
    • シェバングラインbin/ディレクトリに.pycファイルに保存されている
    • 絶対パス
    • シンボリックリンクいかなるlocal/ディレクトリに
    関連する問題