2012-09-20 34 views
9

キャッシュパッケージを使用してpipenパッケージをvirtualenvにインストールする適切な方法は何ですか?私は--timeout=360--use-mirrorsを設定しようとしましたが、pypiのパフォーマンスは非常にフレークであり、定期的にハングアップまたは接続解除され、配備がうまくいっています。ダウンロードキャッシュを使用してVirtualenvにPIPパッケージをインストールする

pip install --upgrade --timeout=120 --use-mirrors --no-install --download-cache /usr/local/pip/cache -r pip-requirements.txt 

し、インストール中にこのキャッシュの場所を指定します。

だから、私の計画は、(それらをインストールしない)などを全てパッケージアーカイブを、ダウンロードに事前に--download-cacheオプションを使用していました例えば、virtualenvのに:PIPが非決定的にキャッシュディレクトリにダウンロードしたパッケージを保存するように見えるため、キャッシュの作成

virtualenv /usr/local/myapp/.env 
. /usr/local/myapp/.env/bin/activate; pip install --no-download --download-cache /usr/local/pip/cache -r pip-requirements.txt 
deactivate 

は、非常にイライラさせられました。具体的には、「その要件は既に​​満たされている」と言ってDjango==1.4.0をキャッシュすることを拒否したので、--force-reinstallを使用しなければなりませんでした。

キャッシュを使用したインストールは、現在のところ止まっています。上記のコマンドを実行するとエラーが表示されます:

Could not install requirement Django==1.4.0 (from -r pip-requirements.txt (line 1)) because source folder /usr/local/myapp/.env/build/Django does not exist (perhaps --no-download was used without first running an equivalent install with --no-install?) 
Storing complete log in /home/chris/.pip/pip.log 

これはどういう意味ですか?

ファイル:

http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2FD%2FDjango%2FDjango-1.4.tar.gz 
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2FD%2FDjango%2FDjango-1.4.tar.gz.content-type 

は間違いなくキャッシュディレクトリに存在する、と私は--no-installオプションを使用していました。

私は間違っていますか?

+0

関連:ちょうど良いCDN /ミラーがありますか? – David

+0

「pipパッケージ」という言葉を使うのは間違いだと思います。おそらくPyPIパッケージやPythonパッケージを意味するでしょう – glarrain

答えて

18

--download-cacheは、ダウンロード用のキャッシュを指定するためにのみ使用でき、インストール用には使用できません。したがって、pipは、/usr/local/pip/cacheの代わりに/usr/local/myapp/.env/build/Djangoを探しています。あなたは移動しようとしました

pip install --upgrade --timeout=120 --use-mirrors --no-install --download-cache /usr/local/pip/cache -r pip-requirements.txt 

virtualenvの作成後に?それが助けになるのだろうかと思う。

PIP_DOWNLOAD_CACHEをエクスポートし、--download-cacheを使用せずに動作するかどうかを確認することもできます。ここで

は私が働くことを見つけることです。実際に今

pip install --no-install --use-mirrors --download=/DIRNAME PKGNAME 
pip install --find-links=file:///DIRNAME --no-index --index-url=file:///dev/null PKGNAME 

、ここで私は上記のすべての代わりに使用するためのツールであり、それは、よりエレガントに多くの問題のすべてを解決信頼できるもの:pip2pi David Wolever。ドキュメントから

pip2tgzを使用し、パッケージとその要件のすべてを反映するには

  1. pip2pi builds a PyPI-compatible package repository from pip requirements

    pip2piは、次の2つの簡単なコマンドを使用して、独自のは、PyPIのインデックスを作成することができます:

    $ cd /tmp/; mkdir package/ 
    $ pip2tgz packages/ httpie==0.2 
    ... 
    $ ls packages/ 
    Pygments-1.5.tar.gz 
    httpie-0.2.0.tar.gz 
    requests-0.14.0.tar.gz 
    
  2. 前のディレクトリからパッケージインデックス:

    $ ls packages/ 
    bar-0.8.tar.gz 
    baz-0.3.tar.gz 
    foo-1.2.tar.gz 
    $ dir2pi packages/ 
    $ find packages/ 
    /httpie-0.2.0.tar.gz 
    /Pygments-1.5.tar.gz 
    /requests-0.14.0.tar.gz 
    /simple 
    /simple/httpie 
    /simple/httpie/httpie-0.2.0.tar.gz 
    /simple/Pygments 
    /simple/Pygments/Pygments-1.5.tar.gz 
    /simple/requests 
    /simple/requests/requests-0.14.0.tar.gz 
    
  3. は、手順2で構築されたインデックスからインストールするには、単に使用することができます。

    pip install --index-url=file:///tmp/packages/simple/ httpie==0.2 
    

ボーナス:あなたも、あなた自身をミラーリングすることができますpip2piのリモートホストへのインデックス。

関連する問題