Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed2.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.005 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'subject:Getting': 0.07; 'imported': 0.09; 'subject:modules': 0.09; 'sure,': 0.09; 'cc:addr :python-list': 0.11; 'python': 0.11; '.py': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'imported.': 0.16; 'modules.': 0.16; 'programmatic': 0.16; 'spam"': 0.16; 'wrote:': 0.18; 'wed,': 0.18; 'module': 0.19; 'packages.': 0.19; 'import': 0.22; 'cc:addr:python.org': 0.22; 'cc:2**0': 0.24; 'define': 0.26; 'header:In-Reply-To:1': 0.27; 'statement': 0.30; 'subject:list': 0.30; 'message- id:@mail.gmail.com': 0.30; "i'm": 0.30; "d'aprano": 0.31; 'steven': 0.31; 'file': 0.32; 'subject:all': 0.32; 'could': 0.34; 'but': 0.35; 'received:google.com': 0.35; 'list': 0.37; 'files': 0.38; 'pm,': 0.38; 'how': 0.40; 'read': 0.60; "you've": 0.63; '30,': 0.65; 'jul': 0.74; 'leo': 0.84; 'to:none': 0.92 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=o2PWCnhJ0SCIJwJL6rcBBm3fTtS5OcQ99qutC34eTlo=; b=wALhODcC2d4+GiBhfFp7cFHSiw5RaPt0lw/xO/faMjau/1pZiCnUwLIK+8Ie3KeJlS 7VNjDqD0CMUVMd3ZBuQC12cOKmOoRyssnQiylXRqGnnlDOVjPR5N1XYpMMYlmXXTHwZi /PyLKd2J1biXIGwIrUPdecI0kmRaCw3LeUstIvRe7Y/ZRncpptdgRypyQttONJbFO5QG HoWEWBS6XUrTnfBsC3QsM1sTNU4fKdmY8TNR8SF7Ueevr/W3D4lYDal4K3rUV4p87zcM PLrOXZooEEdZaKvwVNp9ox/tBIY48gRSmGMDlJHGeyVJx1JlvL2v6VhOsuMr2wHZ2WMs pguA== MIME-Version: 1.0 X-Received: by 10.42.15.19 with SMTP id j19mr5380697ica.59.1406726862751; Wed, 30 Jul 2014 06:27:42 -0700 (PDT) In-Reply-To: References: <53d8a20e$0$29977$c3e8da3$5496439d@news.astraweb.com> Date: Wed, 30 Jul 2014 23:27:42 +1000 Subject: Re: Getting a list of all modules From: Chris Angelico Cc: "python-list@python.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 17 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1406726865 news.xs4all.nl 2933 [2001:888:2000:d::a6]:45927 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:75373 On Wed, Jul 30, 2014 at 11:22 PM, Leo Jay wrote: > On Wed, Jul 30, 2014 at 3:43 PM, Steven D'Aprano wrote: >> I'm looking for a programmatic way to get a list of all Python modules >> and packages. Not just those already imported, but all those which >> *could* be imported. >> > > If you don't actually import it, how can you know it could be imported? > Not all .so files are valid python modules. > Not all .py files could be imported by all python interpreters. What if you define it as "modules you could attempt to import"? Sure, any module might fail during importing, but you've still taken a statement of "import spam" and turned it into an attempt to read some specific file from the disk. ChrisA