blob: 1e3d5c01a47adf5905255688d8ef3121d0fa7f0a [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. _tut-modules:
2
3*******
4Modules
5*******
6
7If you quit from the Python interpreter and enter it again, the definitions you
8have made (functions and variables) are lost. Therefore, if you want to write a
9somewhat longer program, you are better off using a text editor to prepare the
10input for the interpreter and running it with that file as input instead. This
11is known as creating a *script*. As your program gets longer, you may want to
12split it into several files for easier maintenance. You may also want to use a
13handy function that you've written in several programs without copying its
14definition into each program.
15
16To support this, Python has a way to put definitions in a file and use them in a
17script or in an interactive instance of the interpreter. Such a file is called a
18*module*; definitions from a module can be *imported* into other modules or into
19the *main* module (the collection of variables that you have access to in a
20script executed at the top level and in calculator mode).
21
22A module is a file containing Python definitions and statements. The file name
23is the module name with the suffix :file:`.py` appended. Within a module, the
24module's name (as a string) is available as the value of the global variable
25``__name__``. For instance, use your favorite text editor to create a file
26called :file:`fibo.py` in the current directory with the following contents::
27
28 # Fibonacci numbers module
29
30 def fib(n): # write Fibonacci series up to n
31 a, b = 0, 1
32 while b < n:
Guido van Rossum0616b792007-08-31 03:25:11 +000033 print(b, end=' ')
Georg Brandl116aa622007-08-15 14:28:22 +000034 a, b = b, a+b
Georg Brandl11e18b02008-08-05 09:04:16 +000035 print()
Georg Brandl116aa622007-08-15 14:28:22 +000036
Serhiy Storchakadba90392016-05-10 12:01:23 +030037 def fib2(n): # return Fibonacci series up to n
Georg Brandl116aa622007-08-15 14:28:22 +000038 result = []
39 a, b = 0, 1
40 while b < n:
41 result.append(b)
42 a, b = b, a+b
43 return result
44
45Now enter the Python interpreter and import this module with the following
46command::
47
48 >>> import fibo
49
50This does not enter the names of the functions defined in ``fibo`` directly in
51the current symbol table; it only enters the module name ``fibo`` there. Using
52the module name you can access the functions::
53
54 >>> fibo.fib(1000)
55 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
56 >>> fibo.fib2(100)
57 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
58 >>> fibo.__name__
59 'fibo'
60
61If you intend to use a function often you can assign it to a local name::
62
63 >>> fib = fibo.fib
64 >>> fib(500)
65 1 1 2 3 5 8 13 21 34 55 89 144 233 377
66
67
68.. _tut-moremodules:
69
70More on Modules
71===============
72
73A module can contain executable statements as well as function definitions.
74These statements are intended to initialize the module. They are executed only
R David Murray25187e62013-04-21 16:58:36 -040075the *first* time the module name is encountered in an import statement. [#]_
76(They are also run if the file is executed as a script.)
Georg Brandl116aa622007-08-15 14:28:22 +000077
78Each module has its own private symbol table, which is used as the global symbol
79table by all functions defined in the module. Thus, the author of a module can
80use global variables in the module without worrying about accidental clashes
81with a user's global variables. On the other hand, if you know what you are
82doing you can touch a module's global variables with the same notation used to
83refer to its functions, ``modname.itemname``.
84
85Modules can import other modules. It is customary but not required to place all
86:keyword:`import` statements at the beginning of a module (or script, for that
87matter). The imported module names are placed in the importing module's global
88symbol table.
89
90There is a variant of the :keyword:`import` statement that imports names from a
91module directly into the importing module's symbol table. For example::
92
93 >>> from fibo import fib, fib2
94 >>> fib(500)
95 1 1 2 3 5 8 13 21 34 55 89 144 233 377
96
97This does not introduce the module name from which the imports are taken in the
98local symbol table (so in the example, ``fibo`` is not defined).
99
100There is even a variant to import all names that a module defines::
101
102 >>> from fibo import *
103 >>> fib(500)
104 1 1 2 3 5 8 13 21 34 55 89 144 233 377
105
106This imports all names except those beginning with an underscore (``_``).
Georg Brandl48310cd2009-01-03 21:18:54 +0000107In most cases Python programmers do not use this facility since it introduces
108an unknown set of names into the interpreter, possibly hiding some things
Guido van Rossum0616b792007-08-31 03:25:11 +0000109you have already defined.
Georg Brandl116aa622007-08-15 14:28:22 +0000110
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000111Note that in general the practice of importing ``*`` from a module or package is
112frowned upon, since it often causes poorly readable code. However, it is okay to
113use it to save typing in interactive sessions.
114
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000115.. note::
116
117 For efficiency reasons, each module is only imported once per interpreter
118 session. Therefore, if you change your modules, you must restart the
119 interpreter -- or, if it's just one module you want to test interactively,
Senthil Kumaran80538e92016-01-16 18:43:24 -0800120 use :func:`importlib.reload`, e.g. ``import importlib;
121 importlib.reload(modulename)``.
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000122
Georg Brandl116aa622007-08-15 14:28:22 +0000123
124.. _tut-modulesasscripts:
125
126Executing modules as scripts
127----------------------------
128
129When you run a Python module with ::
130
131 python fibo.py <arguments>
132
133the code in the module will be executed, just as if you imported it, but with
134the ``__name__`` set to ``"__main__"``. That means that by adding this code at
135the end of your module::
136
137 if __name__ == "__main__":
138 import sys
139 fib(int(sys.argv[1]))
140
141you can make the file usable as a script as well as an importable module,
142because the code that parses the command line only runs if the module is
Martin Panter1050d2d2016-07-26 11:18:21 +0200143executed as the "main" file:
144
145.. code-block:: shell-session
Georg Brandl116aa622007-08-15 14:28:22 +0000146
147 $ python fibo.py 50
148 1 1 2 3 5 8 13 21 34
149
150If the module is imported, the code is not run::
151
152 >>> import fibo
153 >>>
154
155This is often used either to provide a convenient user interface to a module, or
156for testing purposes (running the module as a script executes a test suite).
157
158
159.. _tut-searchpath:
160
161The Module Search Path
162----------------------
163
164.. index:: triple: module; search; path
165
Sandro Tosif0229aa2012-01-19 11:29:26 +0100166When a module named :mod:`spam` is imported, the interpreter first searches for
167a built-in module with that name. If not found, it then searches for a file
168named :file:`spam.py` in a list of directories given by the variable
169:data:`sys.path`. :data:`sys.path` is initialized from these locations:
Georg Brandl116aa622007-08-15 14:28:22 +0000170
Brett Cannonf811bbf2014-02-06 09:22:51 -0500171* The directory containing the input script (or the current directory when no
172 file is specified).
Sandro Tosif0229aa2012-01-19 11:29:26 +0100173* :envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the
174 shell variable :envvar:`PATH`).
Brett Cannonf811bbf2014-02-06 09:22:51 -0500175* The installation-dependent default.
176
177.. note::
178 On file systems which support symlinks, the directory containing the input
179 script is calculated after the symlink is followed. In other words the
180 directory containing the symlink is **not** added to the module search path.
Sandro Tosif0229aa2012-01-19 11:29:26 +0100181
182After initialization, Python programs can modify :data:`sys.path`. The
183directory containing the script being run is placed at the beginning of the
184search path, ahead of the standard library path. This means that scripts in that
185directory will be loaded instead of modules of the same name in the library
186directory. This is an error unless the replacement is intended. See section
187:ref:`tut-standardmodules` for more information.
Georg Brandl116aa622007-08-15 14:28:22 +0000188
Guido van Rossum0616b792007-08-31 03:25:11 +0000189.. %
190 Do we need stuff on zip files etc. ? DUBOIS
Georg Brandl116aa622007-08-15 14:28:22 +0000191
192"Compiled" Python files
193-----------------------
194
Georg Brandl5db7c542013-10-12 19:13:23 +0200195To speed up loading modules, Python caches the compiled version of each module
Georg Brandl325a1c22013-10-27 09:16:01 +0100196in the ``__pycache__`` directory under the name :file:`module.{version}.pyc`,
Georg Brandl5db7c542013-10-12 19:13:23 +0200197where the version encodes the format of the compiled file; it generally contains
198the Python version number. For example, in CPython release 3.3 the compiled
199version of spam.py would be cached as ``__pycache__/spam.cpython-33.pyc``. This
200naming convention allows compiled modules from different releases and different
201versions of Python to coexist.
Georg Brandl116aa622007-08-15 14:28:22 +0000202
Georg Brandl5db7c542013-10-12 19:13:23 +0200203Python checks the modification date of the source against the compiled version
204to see if it's out of date and needs to be recompiled. This is a completely
205automatic process. Also, the compiled modules are platform-independent, so the
206same library can be shared among systems with different architectures.
207
208Python does not check the cache in two circumstances. First, it always
209recompiles and does not store the result for the module that's loaded directly
210from the command line. Second, it does not check the cache if there is no
211source module. To support a non-source (compiled only) distribution, the
212compiled module must be in the source directory, and there must not be a source
213module.
Georg Brandl116aa622007-08-15 14:28:22 +0000214
215Some tips for experts:
216
Georg Brandl5db7c542013-10-12 19:13:23 +0200217* You can use the :option:`-O` or :option:`-OO` switches on the Python command
218 to reduce the size of a compiled module. The ``-O`` switch removes assert
219 statements, the ``-OO`` switch removes both assert statements and __doc__
220 strings. Since some programs may rely on having these available, you should
221 only use this option if you know what you're doing. "Optimized" modules have
Brett Cannonf299abd2015-04-13 14:21:02 -0400222 an ``opt-`` tag and are usually smaller. Future releases may
Georg Brandl5db7c542013-10-12 19:13:23 +0200223 change the effects of optimization.
Georg Brandl116aa622007-08-15 14:28:22 +0000224
Brett Cannonf299abd2015-04-13 14:21:02 -0400225* A program doesn't run any faster when it is read from a ``.pyc``
Georg Brandl5db7c542013-10-12 19:13:23 +0200226 file than when it is read from a ``.py`` file; the only thing that's faster
Brett Cannonf299abd2015-04-13 14:21:02 -0400227 about ``.pyc`` files is the speed with which they are loaded.
Georg Brandl116aa622007-08-15 14:28:22 +0000228
Brett Cannonf299abd2015-04-13 14:21:02 -0400229* The module :mod:`compileall` can create .pyc files for all modules in a
230 directory.
Georg Brandl116aa622007-08-15 14:28:22 +0000231
Georg Brandl5db7c542013-10-12 19:13:23 +0200232* There is more detail on this process, including a flow chart of the
233 decisions, in PEP 3147.
Georg Brandl116aa622007-08-15 14:28:22 +0000234
Georg Brandl116aa622007-08-15 14:28:22 +0000235
236.. _tut-standardmodules:
237
238Standard Modules
239================
240
241.. index:: module: sys
242
243Python comes with a library of standard modules, described in a separate
244document, the Python Library Reference ("Library Reference" hereafter). Some
245modules are built into the interpreter; these provide access to operations that
246are not part of the core of the language but are nevertheless built in, either
247for efficiency or to provide access to operating system primitives such as
248system calls. The set of such modules is a configuration option which also
Sandro Tosida9df922012-08-04 19:42:24 +0200249depends on the underlying platform. For example, the :mod:`winreg` module is only
Georg Brandl116aa622007-08-15 14:28:22 +0000250provided on Windows systems. One particular module deserves some attention:
251:mod:`sys`, which is built into every Python interpreter. The variables
252``sys.ps1`` and ``sys.ps2`` define the strings used as primary and secondary
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000253prompts::
Georg Brandl116aa622007-08-15 14:28:22 +0000254
255 >>> import sys
256 >>> sys.ps1
257 '>>> '
258 >>> sys.ps2
259 '... '
260 >>> sys.ps1 = 'C> '
Guido van Rossum0616b792007-08-31 03:25:11 +0000261 C> print('Yuck!')
Georg Brandl116aa622007-08-15 14:28:22 +0000262 Yuck!
263 C>
264
265
266These two variables are only defined if the interpreter is in interactive mode.
267
268The variable ``sys.path`` is a list of strings that determines the interpreter's
269search path for modules. It is initialized to a default path taken from the
270environment variable :envvar:`PYTHONPATH`, or from a built-in default if
271:envvar:`PYTHONPATH` is not set. You can modify it using standard list
272operations::
273
274 >>> import sys
275 >>> sys.path.append('/ufs/guido/lib/python')
276
277
278.. _tut-dir:
279
280The :func:`dir` Function
281========================
282
283The built-in function :func:`dir` is used to find out which names a module
284defines. It returns a sorted list of strings::
285
286 >>> import fibo, sys
287 >>> dir(fibo)
288 ['__name__', 'fib', 'fib2']
Ezio Melotti52e85502012-11-17 12:50:14 +0200289 >>> dir(sys) # doctest: +NORMALIZE_WHITESPACE
Ezio Melottiac6ca3d2012-11-17 12:56:29 +0200290 ['__displayhook__', '__doc__', '__excepthook__', '__loader__', '__name__',
291 '__package__', '__stderr__', '__stdin__', '__stdout__',
292 '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe',
293 '_home', '_mercurial', '_xoptions', 'abiflags', 'api_version', 'argv',
294 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder',
295 'call_tracing', 'callstats', 'copyright', 'displayhook',
296 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix',
297 'executable', 'exit', 'flags', 'float_info', 'float_repr_style',
298 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags',
299 'getfilesystemencoding', 'getobjects', 'getprofile', 'getrecursionlimit',
300 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettotalrefcount',
301 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info',
302 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path',
303 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1',
304 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit',
305 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout',
306 'thread_info', 'version', 'version_info', 'warnoptions']
Georg Brandl116aa622007-08-15 14:28:22 +0000307
308Without arguments, :func:`dir` lists the names you have defined currently::
309
310 >>> a = [1, 2, 3, 4, 5]
311 >>> import fibo
312 >>> fib = fibo.fib
313 >>> dir()
Ezio Melotti52e85502012-11-17 12:50:14 +0200314 ['__builtins__', '__name__', 'a', 'fib', 'fibo', 'sys']
Georg Brandl116aa622007-08-15 14:28:22 +0000315
316Note that it lists all types of names: variables, modules, functions, etc.
317
Georg Brandl1a3284e2007-12-02 09:40:06 +0000318.. index:: module: builtins
Georg Brandl116aa622007-08-15 14:28:22 +0000319
320:func:`dir` does not list the names of built-in functions and variables. If you
321want a list of those, they are defined in the standard module
Georg Brandl1a3284e2007-12-02 09:40:06 +0000322:mod:`builtins`::
Georg Brandl116aa622007-08-15 14:28:22 +0000323
Georg Brandl1a3284e2007-12-02 09:40:06 +0000324 >>> import builtins
Ezio Melotti52e85502012-11-17 12:50:14 +0200325 >>> dir(builtins) # doctest: +NORMALIZE_WHITESPACE
326 ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException',
Ezio Melotti4a42ec52012-11-17 12:54:45 +0200327 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning',
328 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError',
329 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning',
330 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False',
331 'FileExistsError', 'FileNotFoundError', 'FloatingPointError',
Ezio Melotti52e85502012-11-17 12:50:14 +0200332 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',
Ezio Melotti4a42ec52012-11-17 12:54:45 +0200333 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError',
334 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError',
335 'MemoryError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented',
336 'NotImplementedError', 'OSError', 'OverflowError',
337 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError',
338 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning',
339 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError',
340 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError',
341 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError',
342 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning',
343 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__build_class__',
344 '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs',
345 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable',
346 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits',
347 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit',
348 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr',
349 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
350 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview',
351 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property',
352 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
353 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars',
354 'zip']
Georg Brandl116aa622007-08-15 14:28:22 +0000355
356.. _tut-packages:
357
358Packages
359========
360
361Packages are a way of structuring Python's module namespace by using "dotted
362module names". For example, the module name :mod:`A.B` designates a submodule
363named ``B`` in a package named ``A``. Just like the use of modules saves the
364authors of different modules from having to worry about each other's global
365variable names, the use of dotted module names saves the authors of multi-module
366packages like NumPy or the Python Imaging Library from having to worry about
367each other's module names.
368
369Suppose you want to design a collection of modules (a "package") for the uniform
370handling of sound files and sound data. There are many different sound file
371formats (usually recognized by their extension, for example: :file:`.wav`,
372:file:`.aiff`, :file:`.au`), so you may need to create and maintain a growing
373collection of modules for the conversion between the various file formats.
374There are also many different operations you might want to perform on sound data
375(such as mixing, adding echo, applying an equalizer function, creating an
376artificial stereo effect), so in addition you will be writing a never-ending
377stream of modules to perform these operations. Here's a possible structure for
Georg Brandl22a1fd72013-10-06 11:08:24 +0200378your package (expressed in terms of a hierarchical filesystem):
379
380.. code-block:: text
Georg Brandl116aa622007-08-15 14:28:22 +0000381
382 sound/ Top-level package
383 __init__.py Initialize the sound package
384 formats/ Subpackage for file format conversions
385 __init__.py
386 wavread.py
387 wavwrite.py
388 aiffread.py
389 aiffwrite.py
390 auread.py
391 auwrite.py
392 ...
393 effects/ Subpackage for sound effects
394 __init__.py
395 echo.py
396 surround.py
397 reverse.py
398 ...
399 filters/ Subpackage for filters
400 __init__.py
401 equalizer.py
402 vocoder.py
403 karaoke.py
404 ...
405
406When importing the package, Python searches through the directories on
407``sys.path`` looking for the package subdirectory.
408
409The :file:`__init__.py` files are required to make Python treat the directories
410as containing packages; this is done to prevent directories with a common name,
411such as ``string``, from unintentionally hiding valid modules that occur later
412on the module search path. In the simplest case, :file:`__init__.py` can just be
413an empty file, but it can also execute initialization code for the package or
414set the ``__all__`` variable, described later.
415
416Users of the package can import individual modules from the package, for
417example::
418
419 import sound.effects.echo
420
421This loads the submodule :mod:`sound.effects.echo`. It must be referenced with
422its full name. ::
423
424 sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
425
426An alternative way of importing the submodule is::
427
428 from sound.effects import echo
429
430This also loads the submodule :mod:`echo`, and makes it available without its
431package prefix, so it can be used as follows::
432
433 echo.echofilter(input, output, delay=0.7, atten=4)
434
435Yet another variation is to import the desired function or variable directly::
436
437 from sound.effects.echo import echofilter
438
439Again, this loads the submodule :mod:`echo`, but this makes its function
440:func:`echofilter` directly available::
441
442 echofilter(input, output, delay=0.7, atten=4)
443
444Note that when using ``from package import item``, the item can be either a
445submodule (or subpackage) of the package, or some other name defined in the
446package, like a function, class or variable. The ``import`` statement first
447tests whether the item is defined in the package; if not, it assumes it is a
448module and attempts to load it. If it fails to find it, an :exc:`ImportError`
449exception is raised.
450
451Contrarily, when using syntax like ``import item.subitem.subsubitem``, each item
452except for the last must be a package; the last item can be a module or a
453package but can't be a class or function or variable defined in the previous
454item.
455
456
457.. _tut-pkg-import-star:
458
459Importing \* From a Package
460---------------------------
461
462.. index:: single: __all__
463
464Now what happens when the user writes ``from sound.effects import *``? Ideally,
465one would hope that this somehow goes out to the filesystem, finds which
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000466submodules are present in the package, and imports them all. This could take a
467long time and importing sub-modules might have unwanted side-effects that should
468only happen when the sub-module is explicitly imported.
Georg Brandl116aa622007-08-15 14:28:22 +0000469
Georg Brandl116aa622007-08-15 14:28:22 +0000470The only solution is for the package author to provide an explicit index of the
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000471package. The :keyword:`import` statement uses the following convention: if a package's
Georg Brandl116aa622007-08-15 14:28:22 +0000472:file:`__init__.py` code defines a list named ``__all__``, it is taken to be the
473list of module names that should be imported when ``from package import *`` is
474encountered. It is up to the package author to keep this list up-to-date when a
475new version of the package is released. Package authors may also decide not to
476support it, if they don't see a use for importing \* from their package. For
Georg Brandlac39add2013-10-06 19:21:14 +0200477example, the file :file:`sound/effects/__init__.py` could contain the following
Georg Brandl116aa622007-08-15 14:28:22 +0000478code::
479
480 __all__ = ["echo", "surround", "reverse"]
481
482This would mean that ``from sound.effects import *`` would import the three
483named submodules of the :mod:`sound` package.
484
485If ``__all__`` is not defined, the statement ``from sound.effects import *``
486does *not* import all submodules from the package :mod:`sound.effects` into the
487current namespace; it only ensures that the package :mod:`sound.effects` has
488been imported (possibly running any initialization code in :file:`__init__.py`)
489and then imports whatever names are defined in the package. This includes any
490names defined (and submodules explicitly loaded) by :file:`__init__.py`. It
491also includes any submodules of the package that were explicitly loaded by
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000492previous :keyword:`import` statements. Consider this code::
Georg Brandl116aa622007-08-15 14:28:22 +0000493
494 import sound.effects.echo
495 import sound.effects.surround
496 from sound.effects import *
497
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000498In this example, the :mod:`echo` and :mod:`surround` modules are imported in the
499current namespace because they are defined in the :mod:`sound.effects` package
500when the ``from...import`` statement is executed. (This also works when
501``__all__`` is defined.)
Georg Brandl116aa622007-08-15 14:28:22 +0000502
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000503Although certain modules are designed to export only names that follow certain
Martin Panter898573a2016-12-10 05:12:56 +0000504patterns when you use ``import *``, it is still considered bad practice in
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +0000505production code.
Georg Brandl116aa622007-08-15 14:28:22 +0000506
507Remember, there is nothing wrong with using ``from Package import
508specific_submodule``! In fact, this is the recommended notation unless the
509importing module needs to use submodules with the same name from different
510packages.
511
512
513Intra-package References
514------------------------
515
Georg Brandl116aa622007-08-15 14:28:22 +0000516When packages are structured into subpackages (as with the :mod:`sound` package
517in the example), you can use absolute imports to refer to submodules of siblings
518packages. For example, if the module :mod:`sound.filters.vocoder` needs to use
519the :mod:`echo` module in the :mod:`sound.effects` package, it can use ``from
520sound.effects import echo``.
521
Georg Brandle6bcc912008-05-12 18:05:20 +0000522You can also write relative imports, with the ``from module import name`` form
523of import statement. These imports use leading dots to indicate the current and
524parent packages involved in the relative import. From the :mod:`surround`
525module for example, you might use::
Georg Brandl116aa622007-08-15 14:28:22 +0000526
527 from . import echo
528 from .. import formats
529 from ..filters import equalizer
530
Georg Brandle6bcc912008-05-12 18:05:20 +0000531Note that relative imports are based on the name of the current module. Since
532the name of the main module is always ``"__main__"``, modules intended for use
533as the main module of a Python application must always use absolute imports.
Georg Brandl116aa622007-08-15 14:28:22 +0000534
535
536Packages in Multiple Directories
537--------------------------------
538
539Packages support one more special attribute, :attr:`__path__`. This is
540initialized to be a list containing the name of the directory holding the
541package's :file:`__init__.py` before the code in that file is executed. This
542variable can be modified; doing so affects future searches for modules and
543subpackages contained in the package.
544
545While this feature is not often needed, it can be used to extend the set of
546modules found in a package.
547
548
549.. rubric:: Footnotes
550
551.. [#] In fact function definitions are also 'statements' that are 'executed'; the
Georg Brandl5e2954e2013-04-14 11:47:46 +0200552 execution of a module-level function definition enters the function name in
553 the module's global symbol table.