peep icon indicating copy to clipboard operation
peep copied to clipboard

Support offline use

Open erikrose opened this issue 12 years ago • 3 comments

Another use case, besides trustability, for a local PyPI mirror is resilience to network failures. It's nice to be able to deploy even when PyPI is down or inaccessible. At the moment, peep installing with --download-cache still insists on hitting PyPI, failing out if it can't. That seems unnecessary. Find the right set of flags to pass to pip to make that not happen, or at least understand why it needs to happen.

erikrose avatar Aug 29 '13 21:08 erikrose

buildout pulls it off: https://pypi.python.org/pypi/zc.buildout/1.5.2#installing-solely-from-a-download-cache. In the worst case, we can implement out own trivial requirement-to-tarball-name mapper.

erikrose avatar Aug 29 '13 21:08 erikrose

Pip can do it, too: http://www.pip-installer.org/en/latest/cookbook.html#fast-local-installs

But when you replace "pip" with "peep" in the second code snippet, this happens:

(smoo)[18:10:07 ~/Checkouts/peep]% peep install --no-index --find-links=/Users/erose/.pip/download -r /Users/erose/Checkouts/socorro/requirements/dev.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking sqlalchemy-citext==1.0-2
  Running setup.py egg_info for package sqlalchemy-citext
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
    IOError: [Errno 2] No such file or directory: '/Users/erose/Virtualenvs/smoo/build/sqlalchemy-citext/setup.py'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

IOError: [Errno 2] No such file or directory: '/Users/erose/Virtualenvs/smoo/build/sqlalchemy-citext/setup.py'

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /Users/erose/Virtualenvs/smoo/build/sqlalchemy-citext
Storing complete log in /Users/erose/.pip/pip.log

I'm sure it's to do with our blithely rewriting commandlines to make multiple internal peep calls. We should be able to work this into a solution; all the parts are there.

erikrose avatar Aug 29 '13 22:08 erikrose

The other thing to consider is that the format of a pip download cache is not the same as what's expected by --find-links. --download-cache emits filenames like https%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpyelasticsearch%2Fpyelasticsearch-0.3.tar.gz, while --find-links needs things like pyelasticsearch-0.3.tar.gz.

erikrose avatar Sep 25 '13 15:09 erikrose