"""Checkversions - recursively search a directory (default: sys.prefix) for _checkversion.py files, and run each of them. This will tell you of new versions available for any packages you have installed.""" import os import getopt import sys import pyversioncheck CHECKNAME="_checkversion.py" VERBOSE=1 USAGE="""Usage: checkversions [-v verboselevel] [dir ...] Recursively examine a tree (default: sys.prefix) and for each package with a _checkversion.py file compare the installed version against the current version. Values for verboselevel: 0 - Minimal output, one line per package 1 - Also print descriptions for outdated packages (default) 2 - Print information on each URL checked 3 - Check every URL for packages with multiple locations""" def check1dir(dummy, dir, files): if CHECKNAME in files: fullname = os.path.join(dir, CHECKNAME) try: exec(open(fullname).read()) except: print('** Exception in', fullname) def walk1tree(tree): os.path.walk(tree, check1dir, None) def main(): global VERBOSE try: options, arguments = getopt.getopt(sys.argv[1:], 'v:') except getopt.error: print(USAGE) sys.exit(1) for o, a in options: if o == '-v': VERBOSE = int(a) if not arguments: arguments = [sys.prefix] for dir in arguments: walk1tree(dir) if __name__ == '__main__': main()