Pip Install -r continue past installs that fail

Question:

I am installing a list of packages with pip-python using the command

pip install -r requirements.txt

sometimes it fails installing packages for whatever reason. Is it possible to have it continue the the next package even with these failures?

Asked By: JiminyCricket

||

Answers:

You could write a little wrapper script to call pip iteratively, something like:

#!/usr/bin/env python
"""
pipreqs.py: run ``pip install`` iteratively over a requirements file.
"""
def main(argv):
    try:
        filename = argv.pop(0)
    except IndexError:
        print("usage: pipreqs.py REQ_FILE [PIP_ARGS]")
    else:
        import pip
        retcode = 0
        with open(filename, 'r') as f:
            for line in f:
                pipcode = pip.main(['install', line.strip()] + argv)
                retcode = retcode or pipcode
        return retcode
if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv[1:]))

which you could call like pipreqs.py requirements.txt --some --other --pip --args.

Note that this only applies the “continue despite failure” motto one level deep—if pip can’t install a sub-requirement of something listed, then of course the parent requirement will still fail.

Answered By: Greg Haskins

I have the same problem.
continuing on the line of @Greg Haskins, maybe this bash one-liner is more succinct:

cat requirements.txt | while read PACKAGE; do pip install "$PACKAGE"; done

# TODO: extend to make the script print a list of failed installs,
# so we can retry them.

(for the non-shellscripters: it calls pip install for each of the listed packages)

the same note on the dependancies failure applies of course here!

Answered By: caesarsol

On Windows command prompt/ cmd:

# For each package,p, in requirements.txt, pip install package
FOR /F %p IN (requirements.txt) DO pip install %p
Answered By: Dave
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.