List of modules available for import inside Python?

S

ssecorp

Is there a way to view all the modules I have available for import
from within Python?
Like writing in the interpreter:
import.modules


Also, is there anything like Cpan for Python?
 
C

Chris Rebert

Is there a way to view all the modules I have available for import
from within Python?
Like writing in the interpreter:
import.modules


Also, is there anything like Cpan for Python?

The closest thing would be PyPI (the Python Package Index)
[http://pypi.python.org/pypi], and easy_install (a package manager for
Python) [http://peak.telecommunity.com/DevCenter/EasyInstall].

- Chris
========
Follow the path of the Iguana...
Rebertia: http://rebertia.com
Blog: http://blog.rebertia.com
 
F

Fredrik Lundh

M

Michele Simionato

Is there a way to view all the modules I have available for import
from within Python?
Like writing in the interpreter:
Try:
help> modules
Please wait a moment while I gather a list of all available modules...
<snip>
 
F

Fredrik Lundh

Isn't the most obvious answer to the first question this link?

depends on whether you want a list of the modules that you might be able
to import, or the modules that are actually present on your system.

</F>
 
J

Jason Scheirer

C

clurker

Michele said:
help> modules
Please wait a moment while I gather a list of all available modules...
<snip>

This looks like it could be a useful tool, but when I try it
I get the following:

Please wait a moment while I gather a list of all available modules...

/usr/lib/python2.5/site-packages/reportlab/lib/PyFontify.py:35:
Warning: 'with' will become a reserved keyword in Python 2.6
/usr/lib/python2.5/site-packages/reportlab/lib/PyFontify.py:36:
Warning: 'with' will become a reserved keyword in Python 2.6
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/site.py", line 346, in __call__
return pydoc.help(*args, **kwds)
File "/usr/lib/python2.5/pydoc.py", line 1645, in __call__
self.interact()
File "/usr/lib/python2.5/pydoc.py", line 1663, in interact
self.help(request)
File "/usr/lib/python2.5/pydoc.py", line 1679, in help
elif request == 'modules': self.listmodules()
File "/usr/lib/python2.5/pydoc.py", line 1797, in listmodules
ModuleScanner().run(callback)
File "/usr/lib/python2.5/pydoc.py", line 1848, in run
for importer, modname, ispkg in pkgutil.walk_packages():
File "/usr/lib/python2.5/pkgutil.py", line 110, in walk_packages
__import__(name)
File "/usr/local/lib/python2.5/site-packages/PIL/__init__.py", line 1342,
in <module>

File "/usr/local/lib/python2.5/site-packages/PIL/__init__.py", line 927,
in main

UnboundLocalError: local variable 'given_files' referenced before assignment
which could be because I am fairly free and unrestrained when
it comes to installing stuff, and I see now I have modules
on both /usr/lib/python2.5 and /usr/local/lib/python2.5

Apparently python knows about them both, but I don't know I
haven't introduced an incompatibility somewhere...and that PIL
package showing up at the tail of the errors was one of my
more recent additions...

Any help will be appreciated,

sc
 
G

Gabriel Genellina

Michele said:
help> modules
Please wait a moment while I gather a list of all available modules...
<snip>

This looks like it could be a useful tool, but when I try it
I get the following:

Please wait a moment while I gather a list of all available modules... [...]
File "/usr/local/lib/python2.5/site-packages/PIL/__init__.py", line 1342,
in <module>

File "/usr/local/lib/python2.5/site-packages/PIL/__init__.py", line 927,
in main

UnboundLocalError: local variable 'given_files' referenced before assignment

Unfortunately the "modules" help command actually imports all the available packages, and a buggy one may stop the whole process with an error.
Apparently python knows about them both, but I don't know I
haven't introduced an incompatibility somewhere...and that PIL
package showing up at the tail of the errors was one of my
more recent additions...

If import of a package fails, the error reported is not accurate. In this case, probably some other package failed, that itself imported PIL. Line 927 in PIL/__init__.py does not exist.

A quick fix is to replace line 1854 in pydoc.py (ModuleScanner.run) with this one:

for importer, modname, ispkg in pkgutil.walk_packages(onerror=lambda name:None):

(the onerror argument makes it to ignore all errors)
 
S

sc

Gabriel said:
Michele said:
Is there a way to view all the modules I have available for import
from within Python?
Like writing in the interpreter:

Try:

help()
help> modules
Please wait a moment while I gather a list of all available modules...
<snip>

This looks like it could be a useful tool, but when I try it
I get the following:

Please wait a moment while I gather a list of all available modules... [...]
File "/usr/local/lib/python2.5/site-packages/PIL/__init__.py", line
1342,
in <module>

File "/usr/local/lib/python2.5/site-packages/PIL/__init__.py", line
927,
in main

UnboundLocalError: local variable 'given_files' referenced before
assignment

Unfortunately the "modules" help command actually imports all the
available packages, and a buggy one may stop the whole process with an
error.
Apparently python knows about them both, but I don't know I
haven't introduced an incompatibility somewhere...and that PIL
package showing up at the tail of the errors was one of my
more recent additions...

If import of a package fails, the error reported is not accurate. In this
case, probably some other package failed, that itself imported PIL. Line
927 in PIL/__init__.py does not exist.

A quick fix is to replace line 1854 in pydoc.py (ModuleScanner.run) with
this one:

for importer, modname, ispkg in
pkgutil.walk_packages(onerror=lambda name:None):

(the onerror argument makes it to ignore all errors)

nice Gabriel, thanx! At least now "help(); modules" gives me a beautiful
list -- I guess I'll find out what the buggy module is if/when I try
to use it...(all PIL/__init__.py is is about 15 lines of comments
(referencing a README I can't find))

sc
 
D

denisbz

A quick fix is to replace line 1854 in pydoc.py (ModuleScanner.run) with
well not all, for example
GLUT: Fatal Error in summon: could not open display: :0.0

So to refine the question:
how can I list all modules that might be importable on my system,
without actually importing them all ?

(How about a "pydoc2" that's well thought out, doesn't crash ...
let me ask more knowledgable people, what's a good small help system
as model ?
)

cheers
-- denis
 
F

Fredrik Lundh

how can I list all modules that might be importable on my system,
without actually importing them all ?

I'm pretty sure I mentioned a way to do that back when this thread was
opened. let's see, yes, here it is:

....

there's a helper script in the 2.5 source code kit that locates all
existing standard modules:

http://svn.python.org/projects/python/tags/r252/Doc/tools/listmodules.py

to get all modules, remove the for-loop that follows after the comment
"get rid of site packages".

also see:

http://effbot.org/zone/listmodules-cgi.htm

....

</F>
 
M

Michele Simionato

I'm pretty sure I mentioned a way to do that back when this thread was
opened.  let's see, yes, here it is:

...

there's a helper script in the 2.5 source code kit that locates all
existing standard modules:

http://svn.python.org/projects/python/tags/r252/Doc/tools/listmodules.py

to get all modules, remove the for-loop that follows after the comment
"get rid of site packages".

I have just tried the following on my Ubuntu box with the system
Python:

~$ python /usr/lib/python2.5/doc/tools/listmodules.py
/usr/lib/python2.5/doc/tools/listmodules.py:99: DeprecationWarning:
the rgbimg module is deprecated
__import__(m)

** (process:24863): WARNING **: AT_SPI_REGISTRY was not started at
session startup.

** (process:24863): WARNING **: Could not locate registry
location: /usr/lib/xulrunner-1.9.0.1/libxpcom.so
before 3
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning: cannot
register existing type `GtkSourceStyleScheme'
__import__(m)
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning:
g_type_set_qdata: assertion `node != NULL' failed
__import__(m)
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning: cannot
register existing type `GtkSourceBuffer'
__import__(m)
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning:
g_type_get_qdata: assertion `node != NULL' failed
__import__(m)
Segmentation fault

Interesting, isn't it?

Michele Simionato
 
F

Fredrik Lundh

Michele said:
I have just tried the following on my Ubuntu box with the system
Python:

~$ python /usr/lib/python2.5/doc/tools/listmodules.py
/usr/lib/python2.5/doc/tools/listmodules.py:99: DeprecationWarning:
the rgbimg module is deprecated
__import__(m)

** (process:24863): WARNING **: AT_SPI_REGISTRY was not started at
session startup.

** (process:24863): WARNING **: Could not locate registry
location: /usr/lib/xulrunner-1.9.0.1/libxpcom.so
before 3
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning: cannot
register existing type `GtkSourceStyleScheme'
__import__(m)
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning:
g_type_set_qdata: assertion `node != NULL' failed
__import__(m)
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning: cannot
register existing type `GtkSourceBuffer'
__import__(m)
/usr/lib/python2.5/doc/tools/listmodules.py:99: Warning:
g_type_get_qdata: assertion `node != NULL' failed
__import__(m)
Segmentation fault

Interesting, isn't it?

it does indeed import modules found in the path if they appear to be
Python C extensions. why Ubuntu puts badly written C modules in their
default Python path is more than I can tell...

</F>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top