web-dev-qa-db-ja.com

pipをインストールせずにvirtualenvのコピーをローカルで作成します

プロジェクトの追加機能をテストするために、既存のvirtualenvのコピーを作成する必要がある場合があります。

そのような場合、既存の環境のコピーを作成し、いくつかの要件を追加する必要があります。

既存のvirtualenvのコピーを作成する方法の1つを以下に示します。

# while using existing virtualenv
(oldenv): pip freeze > requirements.txt

# after creating and logged-in to new virtualenv
(newenv): pip install -r requirements.txt

# where requirements.txt is the same file created using (oldenv)

しかし、私は個人的にこの方法を好みません。なぜ?? 既に存在する同じパッケージをインストールするため、再利用できます再利用またはコピーは、余分な時間と労力を削減するだけでなく、インターネット帯域幅の使用量を削減します。特に、制限のある低速のインターネットユーザー向けです。

クール!次に、既存のvirtualenvのコピーをローカルに作成する他の方法は何ですか?

以下で言及している他の2つの方法を知っています。これらが役立つことを願っています。

5
Saurav Kumar

既存のvirtualenvのコピーを作成する最初の方法、たとえばProjectAenv

  1. ProjectAenvを他の名前またはディレクトリにコピーします。

    cp -R /home/sk/Path1/ProjectAenv /home/sk/Path2/ProjectBenv
    

    ここで、/home/sk/Path1/ProjectAenvはvirtualenvの絶対パスですProjectAenv

  2. 次に、好みのエディターを使用して、新しくコピーされたactivateファイルを開きますProjectBenv

    gedit /home/sk/Path2/ProjectBenv/bin/activate
    
  3. VIRTUAL_ENV = "/ home/sk/Path1/ProjectAenv"の行を見つけて、次の行に置き換えます。

    VIRTUAL_ENV="/home/sk/Path2/ProjectBenv"
    

    ファイルを保存して閉じます。

それでおしまい!!新しい環境ProjectBenvProjectAenvからコピーされ、すぐに使用できます。私はこの方法を長い間使用しており、まだ問題は発生していませんが、2番目のコピー方法をお勧めします。

既存のvirtualenv(推奨)のコピーを作成する2番目の方法

  1. ダウンロードvirtualenv-clone

    wget https://pypi.python.org/packages/source/v/virtualenv-clone/virtualenv-clone-0.2.6.tar.gz
    tar -zxvf virtualenv-clone-0.2.6.tar.gz
    cd virtualenv-clone-0.2.6
    
  2. virtualenv-cloneをvirtualenv環境内にインストールします。

    virtualenv newenv            # create a new environment. You can use any existing one.
    source newenv/bin/activate   # login to newenv
    (newenv): python setup.py install  # install virtualenv-clone in newenv
    # be sure that you are inside the directory "virtualenv-clone-0.2.6"
    

    virtualenv-cloneはnewenv内にインストールされます。

  3. これで、newenvとしてログインしながら、既存の環境のコピーを作成できます。たとえば、ProjectAenvのコピーを作成します。

    (newenv): virtualenv-clone ProjectAenv ProjectBenv 
    (newenv): deactivate             # to come out from newenv.
    

提案や変更についてはコメントしてください。

9
Saurav Kumar

@SauravKumarの手動メソッドに追加したいだけです。 activateスクリプトのパスを修正する必要がありますが、十分ではありません。 pippip2などの他のスクリプトのパスも修正する必要があります。

最も簡単な方法は、次のような仮想環境binフォルダー内のパスを検索することです。

root@www:/var/www/app/venv/bin# grep "/tmp/app/HadithHouseWebsite/venv" * -R
activate:VIRTUAL_ENV="/tmp/app/HadithHouseWebsite/venv"
activate.csh:setenv VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
activate.fish:set -gx VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
Django-admin:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
Django-admin.py:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install-2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pbr:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
python-config:#!/tmp/app/HadithHouseWebsite/venv/bin/python
sqlformat:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
wheel:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7

次に、これらのファイルを調べて、必要なファイルを変更します。ほとんどの場合、activate*ファイルとpip*ファイルを変更する必要があります。

お役に立てれば。

3
Rafid