mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00

svn+ssh://svn.python.org/python/branches/py3k ................ r73941 | georg.brandl | 2009-07-11 12:39:00 +0200 (Sa, 11 Jul 2009) | 9 lines Merged revisions 73940 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r73940 | georg.brandl | 2009-07-11 12:37:38 +0200 (Sa, 11 Jul 2009) | 1 line #6430: add note about size of "u" type. ........ ................ r73942 | georg.brandl | 2009-07-11 12:39:23 +0200 (Sa, 11 Jul 2009) | 1 line #6430: remove mention of "w" array typecode. ................ r73943 | georg.brandl | 2009-07-11 12:43:08 +0200 (Sa, 11 Jul 2009) | 1 line #6421: The self argument of module-level PyCFunctions is now a reference to the module object. ................ r74076 | georg.brandl | 2009-07-18 11:07:48 +0200 (Sa, 18 Jul 2009) | 1 line #6502: add missing comma in docstring. ................ r74094 | georg.brandl | 2009-07-19 09:25:56 +0200 (So, 19 Jul 2009) | 10 lines Recorded merge of revisions 74089 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74089 | senthil.kumaran | 2009-07-19 04:43:43 +0200 (So, 19 Jul 2009) | 3 lines Fix for issue5102, timeout value propages between redirects, proxy, digest and auth handlers. Fixed tests to reflect the same. ........ ................ r74186 | georg.brandl | 2009-07-23 11:19:09 +0200 (Do, 23 Jul 2009) | 9 lines Recorded merge of revisions 74185 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74185 | georg.brandl | 2009-07-23 11:17:09 +0200 (Do, 23 Jul 2009) | 1 line Fix the "pylocals" gdb command. ........ ................ r74211 | georg.brandl | 2009-07-26 16:48:09 +0200 (So, 26 Jul 2009) | 9 lines Recorded merge of revisions 74210 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74210 | georg.brandl | 2009-07-26 16:44:23 +0200 (So, 26 Jul 2009) | 1 line Move member descriptions inside the classes. ........ ................ r74212 | georg.brandl | 2009-07-26 16:54:51 +0200 (So, 26 Jul 2009) | 9 lines Merged revisions 74209 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74209 | georg.brandl | 2009-07-26 16:37:28 +0200 (So, 26 Jul 2009) | 1 line builtin -> built-in. ........ ................ r74213 | georg.brandl | 2009-07-26 17:02:41 +0200 (So, 26 Jul 2009) | 9 lines Merged revisions 74207 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74207 | georg.brandl | 2009-07-26 16:19:57 +0200 (So, 26 Jul 2009) | 1 line #6577: fix (hopefully) all links to builtin instead of module/class-specific objects. ........ ................ r74214 | georg.brandl | 2009-07-26 17:03:49 +0200 (So, 26 Jul 2009) | 9 lines Merged revisions 74205 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74205 | georg.brandl | 2009-07-26 15:36:39 +0200 (So, 26 Jul 2009) | 1 line #6576: fix cross-refs in re docs. ........ ................ r74247 | georg.brandl | 2009-07-29 09:27:08 +0200 (Mi, 29 Jul 2009) | 9 lines Merged revisions 74239 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74239 | georg.brandl | 2009-07-28 18:55:32 +0000 (Di, 28 Jul 2009) | 1 line Clarify quote_plus() usage. ........ ................ r74254 | georg.brandl | 2009-07-29 18:14:16 +0200 (Mi, 29 Jul 2009) | 1 line #6586: fix return/argument type doc for os.read() and os.write(). ................ r74262 | alexandre.vassalotti | 2009-07-29 21:54:39 +0200 (Mi, 29 Jul 2009) | 57 lines Merged revisions 74074,74077,74111,74188,74192-74193,74200,74252-74253,74258-74261 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74074 | georg.brandl | 2009-07-18 05:03:10 -0400 (Sat, 18 Jul 2009) | 1 line #6513: fix example code: warning categories are classes, not instances. ........ r74077 | georg.brandl | 2009-07-18 05:43:40 -0400 (Sat, 18 Jul 2009) | 1 line #6489: fix an ambiguity in getiterator() documentation. ........ r74111 | benjamin.peterson | 2009-07-20 09:30:10 -0400 (Mon, 20 Jul 2009) | 1 line remove docs for deprecated -p option ........ r74188 | benjamin.peterson | 2009-07-23 10:25:31 -0400 (Thu, 23 Jul 2009) | 1 line use bools ........ r74192 | georg.brandl | 2009-07-24 12:28:38 -0400 (Fri, 24 Jul 2009) | 1 line Fix arg types of et#. ........ r74193 | georg.brandl | 2009-07-24 12:46:38 -0400 (Fri, 24 Jul 2009) | 1 line Dont put "void" in signature for nullary functions. ........ r74200 | georg.brandl | 2009-07-25 09:02:15 -0400 (Sat, 25 Jul 2009) | 1 line #6571: add index entries for more operators. ........ r74252 | georg.brandl | 2009-07-29 12:06:31 -0400 (Wed, 29 Jul 2009) | 1 line #6593: fix link targets. ........ r74253 | georg.brandl | 2009-07-29 12:09:17 -0400 (Wed, 29 Jul 2009) | 1 line #6591: add reference to ioctl in fcntl module for platforms other than Windows. ........ r74258 | georg.brandl | 2009-07-29 12:57:05 -0400 (Wed, 29 Jul 2009) | 1 line Add a link to readline, and mention IPython and bpython. ........ r74259 | georg.brandl | 2009-07-29 13:07:21 -0400 (Wed, 29 Jul 2009) | 1 line Fix some markup and small factual glitches found by M. Markert. ........ r74260 | georg.brandl | 2009-07-29 13:15:20 -0400 (Wed, 29 Jul 2009) | 1 line Fix a few markup glitches. ........ r74261 | georg.brandl | 2009-07-29 13:50:25 -0400 (Wed, 29 Jul 2009) | 1 line Rewrite the section about classes a bit; mostly tidbits, and a larger update to the section about "private" variables to reflect the Pythonic consensus better. ........ ................ r74311 | georg.brandl | 2009-08-04 22:29:27 +0200 (Di, 04 Aug 2009) | 1 line Slightly improve buffer-related error message. ................ r74334 | georg.brandl | 2009-08-06 19:51:03 +0200 (Do, 06 Aug 2009) | 1 line #6648: mention surrogateescape handler where all standard handlers are listed. ................ r74368 | georg.brandl | 2009-08-13 09:56:35 +0200 (Do, 13 Aug 2009) | 21 lines Merged revisions 74328,74332-74333,74365 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r74328 | georg.brandl | 2009-08-06 17:06:25 +0200 (Do, 06 Aug 2009) | 1 line Fix base keyword arg name for int() and long(). ........ r74332 | georg.brandl | 2009-08-06 19:23:21 +0200 (Do, 06 Aug 2009) | 1 line Fix punctuation and one copy-paste error. ........ r74333 | georg.brandl | 2009-08-06 19:43:55 +0200 (Do, 06 Aug 2009) | 1 line #6658: fix two typos. ........ r74365 | georg.brandl | 2009-08-13 09:48:05 +0200 (Do, 13 Aug 2009) | 1 line #6679: Remove mention that sub supports no flags. ........ ................
160 lines
5.5 KiB
ReStructuredText
160 lines
5.5 KiB
ReStructuredText
|
|
:mod:`zipimport` --- Import modules from Zip archives
|
|
=====================================================
|
|
|
|
.. module:: zipimport
|
|
:synopsis: support for importing Python modules from ZIP archives.
|
|
.. moduleauthor:: Just van Rossum <just@letterror.com>
|
|
|
|
|
|
This module adds the ability to import Python modules (:file:`\*.py`,
|
|
:file:`\*.py[co]`) and packages from ZIP-format archives. It is usually not
|
|
needed to use the :mod:`zipimport` module explicitly; it is automatically used
|
|
by the built-in :keyword:`import` mechanism for ``sys.path`` items that are paths
|
|
to ZIP archives.
|
|
|
|
Typically, ``sys.path`` is a list of directory names as strings. This module
|
|
also allows an item of ``sys.path`` to be a string naming a ZIP file archive.
|
|
The ZIP archive can contain a subdirectory structure to support package imports,
|
|
and a path within the archive can be specified to only import from a
|
|
subdirectory. For example, the path :file:`/tmp/example.zip/lib/` would only
|
|
import from the :file:`lib/` subdirectory within the archive.
|
|
|
|
Any files may be present in the ZIP archive, but only files :file:`.py` and
|
|
:file:`.py[co]` are available for import. ZIP import of dynamic modules
|
|
(:file:`.pyd`, :file:`.so`) is disallowed. Note that if an archive only contains
|
|
:file:`.py` files, Python will not attempt to modify the archive by adding the
|
|
corresponding :file:`.pyc` or :file:`.pyo` file, meaning that if a ZIP archive
|
|
doesn't contain :file:`.pyc` files, importing may be rather slow.
|
|
|
|
.. seealso::
|
|
|
|
`PKZIP Application Note <http://www.pkware.com/documents/casestudies/APPNOTE.TXT>`_
|
|
Documentation on the ZIP file format by Phil Katz, the creator of the format and
|
|
algorithms used.
|
|
|
|
:pep:`0273` - Import Modules from Zip Archives
|
|
Written by James C. Ahlstrom, who also provided an implementation. Python 2.3
|
|
follows the specification in PEP 273, but uses an implementation written by Just
|
|
van Rossum that uses the import hooks described in PEP 302.
|
|
|
|
:pep:`0302` - New Import Hooks
|
|
The PEP to add the import hooks that help this module work.
|
|
|
|
|
|
This module defines an exception:
|
|
|
|
.. exception:: ZipImportError
|
|
|
|
Exception raised by zipimporter objects. It's a subclass of :exc:`ImportError`,
|
|
so it can be caught as :exc:`ImportError`, too.
|
|
|
|
|
|
.. _zipimporter-objects:
|
|
|
|
zipimporter Objects
|
|
-------------------
|
|
|
|
:class:`zipimporter` is the class for importing ZIP files.
|
|
|
|
.. class:: zipimporter(archivepath)
|
|
|
|
Create a new zipimporter instance. *archivepath* must be a path to a ZIP
|
|
file, or to a specific path within a ZIP file. For example, an *archivepath*
|
|
of :file:`foo/bar.zip/lib` will look for modules in the :file:`lib` directory
|
|
inside the ZIP file :file:`foo/bar.zip` (provided that it exists).
|
|
|
|
:exc:`ZipImportError` is raised if *archivepath* doesn't point to a valid ZIP
|
|
archive.
|
|
|
|
.. method:: find_module(fullname[, path])
|
|
|
|
Search for a module specified by *fullname*. *fullname* must be the fully
|
|
qualified (dotted) module name. It returns the zipimporter instance itself
|
|
if the module was found, or :const:`None` if it wasn't. The optional
|
|
*path* argument is ignored---it's there for compatibility with the
|
|
importer protocol.
|
|
|
|
|
|
.. method:: get_code(fullname)
|
|
|
|
Return the code object for the specified module. Raise
|
|
:exc:`ZipImportError` if the module couldn't be found.
|
|
|
|
|
|
.. method:: get_data(pathname)
|
|
|
|
Return the data associated with *pathname*. Raise :exc:`IOError` if the
|
|
file wasn't found.
|
|
|
|
|
|
.. method:: get_filename(fullname)
|
|
|
|
Return the value ``__file__`` would be set to if the specified module
|
|
was imported. Raise :exc:`ZipImportError` if the module couldn't be
|
|
found.
|
|
|
|
.. versionadded:: 3.1
|
|
|
|
|
|
.. method:: get_source(fullname)
|
|
|
|
Return the source code for the specified module. Raise
|
|
:exc:`ZipImportError` if the module couldn't be found, return
|
|
:const:`None` if the archive does contain the module, but has no source
|
|
for it.
|
|
|
|
|
|
.. method:: is_package(fullname)
|
|
|
|
Return True if the module specified by *fullname* is a package. Raise
|
|
:exc:`ZipImportError` if the module couldn't be found.
|
|
|
|
|
|
.. method:: load_module(fullname)
|
|
|
|
Load the module specified by *fullname*. *fullname* must be the fully
|
|
qualified (dotted) module name. It returns the imported module, or raises
|
|
:exc:`ZipImportError` if it wasn't found.
|
|
|
|
|
|
.. attribute:: archive
|
|
|
|
The file name of the importer's associated ZIP file, without a possible
|
|
subpath.
|
|
|
|
|
|
.. attribute:: prefix
|
|
|
|
The subpath within the ZIP file where modules are searched. This is the
|
|
empty string for zipimporter objects which point to the root of the ZIP
|
|
file.
|
|
|
|
The :attr:`archive` and :attr:`prefix` attributes, when combined with a
|
|
slash, equal the original *archivepath* argument given to the
|
|
:class:`zipimporter` constructor.
|
|
|
|
|
|
.. _zipimport-examples:
|
|
|
|
Examples
|
|
--------
|
|
|
|
Here is an example that imports a module from a ZIP archive - note that the
|
|
:mod:`zipimport` module is not explicitly used. ::
|
|
|
|
$ unzip -l /tmp/example.zip
|
|
Archive: /tmp/example.zip
|
|
Length Date Time Name
|
|
-------- ---- ---- ----
|
|
8467 11-26-02 22:30 jwzthreading.py
|
|
-------- -------
|
|
8467 1 file
|
|
$ ./python
|
|
Python 2.3 (#1, Aug 1 2003, 19:54:32)
|
|
>>> import sys
|
|
>>> sys.path.insert(0, '/tmp/example.zip') # Add .zip file to front of path
|
|
>>> import jwzthreading
|
|
>>> jwzthreading.__file__
|
|
'/tmp/example.zip/jwzthreading.py'
|
|
|