1.. _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 a < n: 33 print(a, end=' ') 34 a, b = b, a+b 35 print() 36 37 def fib2(n): # return Fibonacci series up to n 38 result = [] 39 a, b = 0, 1 40 while a < n: 41 result.append(a) 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 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 56 >>> fibo.fib2(100) 57 [0, 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 0 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 75the *first* time the module name is encountered in an import statement. [#]_ 76(They are also run if the file is executed as a script.) 77 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 0 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 0 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 (``_``). 107In most cases Python programmers do not use this facility since it introduces 108an unknown set of names into the interpreter, possibly hiding some things 109you have already defined. 110 111Note 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 115If the module name is followed by :keyword:`!as`, then the name 116following :keyword:`!as` is bound directly to the imported module. 117 118:: 119 120 >>> import fibo as fib 121 >>> fib.fib(500) 122 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 123 124This is effectively importing the module in the same way that ``import fibo`` 125will do, with the only difference of it being available as ``fib``. 126 127It can also be used when utilising :keyword:`from` with similar effects:: 128 129 >>> from fibo import fib as fibonacci 130 >>> fibonacci(500) 131 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 132 133 134.. note:: 135 136 For efficiency reasons, each module is only imported once per interpreter 137 session. Therefore, if you change your modules, you must restart the 138 interpreter -- or, if it's just one module you want to test interactively, 139 use :func:`importlib.reload`, e.g. ``import importlib; 140 importlib.reload(modulename)``. 141 142 143.. _tut-modulesasscripts: 144 145Executing modules as scripts 146---------------------------- 147 148When you run a Python module with :: 149 150 python fibo.py <arguments> 151 152the code in the module will be executed, just as if you imported it, but with 153the ``__name__`` set to ``"__main__"``. That means that by adding this code at 154the end of your module:: 155 156 if __name__ == "__main__": 157 import sys 158 fib(int(sys.argv[1])) 159 160you can make the file usable as a script as well as an importable module, 161because the code that parses the command line only runs if the module is 162executed as the "main" file: 163 164.. code-block:: shell-session 165 166 $ python fibo.py 50 167 0 1 1 2 3 5 8 13 21 34 168 169If the module is imported, the code is not run:: 170 171 >>> import fibo 172 >>> 173 174This is often used either to provide a convenient user interface to a module, or 175for testing purposes (running the module as a script executes a test suite). 176 177 178.. _tut-searchpath: 179 180The Module Search Path 181---------------------- 182 183.. index:: triple: module; search; path 184 185When a module named :mod:`spam` is imported, the interpreter first searches for 186a built-in module with that name. If not found, it then searches for a file 187named :file:`spam.py` in a list of directories given by the variable 188:data:`sys.path`. :data:`sys.path` is initialized from these locations: 189 190* The directory containing the input script (or the current directory when no 191 file is specified). 192* :envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the 193 shell variable :envvar:`PATH`). 194* The installation-dependent default (by convention including a 195 ``site-packages`` directory, handled by the :mod:`site` module). 196 197.. note:: 198 On file systems which support symlinks, the directory containing the input 199 script is calculated after the symlink is followed. In other words the 200 directory containing the symlink is **not** added to the module search path. 201 202After initialization, Python programs can modify :data:`sys.path`. The 203directory containing the script being run is placed at the beginning of the 204search path, ahead of the standard library path. This means that scripts in that 205directory will be loaded instead of modules of the same name in the library 206directory. This is an error unless the replacement is intended. See section 207:ref:`tut-standardmodules` for more information. 208 209.. % 210 Do we need stuff on zip files etc. ? DUBOIS 211 212"Compiled" Python files 213----------------------- 214 215To speed up loading modules, Python caches the compiled version of each module 216in the ``__pycache__`` directory under the name :file:`module.{version}.pyc`, 217where the version encodes the format of the compiled file; it generally contains 218the Python version number. For example, in CPython release 3.3 the compiled 219version of spam.py would be cached as ``__pycache__/spam.cpython-33.pyc``. This 220naming convention allows compiled modules from different releases and different 221versions of Python to coexist. 222 223Python checks the modification date of the source against the compiled version 224to see if it's out of date and needs to be recompiled. This is a completely 225automatic process. Also, the compiled modules are platform-independent, so the 226same library can be shared among systems with different architectures. 227 228Python does not check the cache in two circumstances. First, it always 229recompiles and does not store the result for the module that's loaded directly 230from the command line. Second, it does not check the cache if there is no 231source module. To support a non-source (compiled only) distribution, the 232compiled module must be in the source directory, and there must not be a source 233module. 234 235Some tips for experts: 236 237* You can use the :option:`-O` or :option:`-OO` switches on the Python command 238 to reduce the size of a compiled module. The ``-O`` switch removes assert 239 statements, the ``-OO`` switch removes both assert statements and __doc__ 240 strings. Since some programs may rely on having these available, you should 241 only use this option if you know what you're doing. "Optimized" modules have 242 an ``opt-`` tag and are usually smaller. Future releases may 243 change the effects of optimization. 244 245* A program doesn't run any faster when it is read from a ``.pyc`` 246 file than when it is read from a ``.py`` file; the only thing that's faster 247 about ``.pyc`` files is the speed with which they are loaded. 248 249* The module :mod:`compileall` can create .pyc files for all modules in a 250 directory. 251 252* There is more detail on this process, including a flow chart of the 253 decisions, in :pep:`3147`. 254 255 256.. _tut-standardmodules: 257 258Standard Modules 259================ 260 261.. index:: module: sys 262 263Python comes with a library of standard modules, described in a separate 264document, the Python Library Reference ("Library Reference" hereafter). Some 265modules are built into the interpreter; these provide access to operations that 266are not part of the core of the language but are nevertheless built in, either 267for efficiency or to provide access to operating system primitives such as 268system calls. The set of such modules is a configuration option which also 269depends on the underlying platform. For example, the :mod:`winreg` module is only 270provided on Windows systems. One particular module deserves some attention: 271:mod:`sys`, which is built into every Python interpreter. The variables 272``sys.ps1`` and ``sys.ps2`` define the strings used as primary and secondary 273prompts:: 274 275 >>> import sys 276 >>> sys.ps1 277 '>>> ' 278 >>> sys.ps2 279 '... ' 280 >>> sys.ps1 = 'C> ' 281 C> print('Yuck!') 282 Yuck! 283 C> 284 285 286These two variables are only defined if the interpreter is in interactive mode. 287 288The variable ``sys.path`` is a list of strings that determines the interpreter's 289search path for modules. It is initialized to a default path taken from the 290environment variable :envvar:`PYTHONPATH`, or from a built-in default if 291:envvar:`PYTHONPATH` is not set. You can modify it using standard list 292operations:: 293 294 >>> import sys 295 >>> sys.path.append('/ufs/guido/lib/python') 296 297 298.. _tut-dir: 299 300The :func:`dir` Function 301======================== 302 303The built-in function :func:`dir` is used to find out which names a module 304defines. It returns a sorted list of strings:: 305 306 >>> import fibo, sys 307 >>> dir(fibo) 308 ['__name__', 'fib', 'fib2'] 309 >>> dir(sys) # doctest: +NORMALIZE_WHITESPACE 310 ['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', 311 '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', 312 '__stderr__', '__stdin__', '__stdout__', '__unraisablehook__', 313 '_clear_type_cache', '_current_frames', '_debugmallocstats', '_framework', 314 '_getframe', '_git', '_home', '_xoptions', 'abiflags', 'addaudithook', 315 'api_version', 'argv', 'audit', 'base_exec_prefix', 'base_prefix', 316 'breakpointhook', 'builtin_module_names', 'byteorder', 'call_tracing', 317 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_info', 318 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 319 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_origin_tracking_depth', 320 'getallocatedblocks', 'getdefaultencoding', 'getdlopenflags', 321 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 322 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 323 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info', 324 'intern', 'is_finalizing', 'last_traceback', 'last_type', 'last_value', 325 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 326 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'pycache_prefix', 327 'set_asyncgen_hooks', 'set_coroutine_origin_tracking_depth', 'setdlopenflags', 328 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 329 'stdin', 'stdout', 'thread_info', 'unraisablehook', 'version', 'version_info', 330 'warnoptions'] 331 332Without arguments, :func:`dir` lists the names you have defined currently:: 333 334 >>> a = [1, 2, 3, 4, 5] 335 >>> import fibo 336 >>> fib = fibo.fib 337 >>> dir() 338 ['__builtins__', '__name__', 'a', 'fib', 'fibo', 'sys'] 339 340Note that it lists all types of names: variables, modules, functions, etc. 341 342.. index:: module: builtins 343 344:func:`dir` does not list the names of built-in functions and variables. If you 345want a list of those, they are defined in the standard module 346:mod:`builtins`:: 347 348 >>> import builtins 349 >>> dir(builtins) # doctest: +NORMALIZE_WHITESPACE 350 ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 351 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 352 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 353 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 354 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 355 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 356 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 357 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 358 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 359 'MemoryError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 360 'NotImplementedError', 'OSError', 'OverflowError', 361 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 362 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 363 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 364 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 365 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 366 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 367 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__build_class__', 368 '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', 369 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 370 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 371 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 372 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 373 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 374 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 375 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 376 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 377 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 378 'zip'] 379 380.. _tut-packages: 381 382Packages 383======== 384 385Packages are a way of structuring Python's module namespace by using "dotted 386module names". For example, the module name :mod:`A.B` designates a submodule 387named ``B`` in a package named ``A``. Just like the use of modules saves the 388authors of different modules from having to worry about each other's global 389variable names, the use of dotted module names saves the authors of multi-module 390packages like NumPy or Pillow from having to worry about 391each other's module names. 392 393Suppose you want to design a collection of modules (a "package") for the uniform 394handling of sound files and sound data. There are many different sound file 395formats (usually recognized by their extension, for example: :file:`.wav`, 396:file:`.aiff`, :file:`.au`), so you may need to create and maintain a growing 397collection of modules for the conversion between the various file formats. 398There are also many different operations you might want to perform on sound data 399(such as mixing, adding echo, applying an equalizer function, creating an 400artificial stereo effect), so in addition you will be writing a never-ending 401stream of modules to perform these operations. Here's a possible structure for 402your package (expressed in terms of a hierarchical filesystem): 403 404.. code-block:: text 405 406 sound/ Top-level package 407 __init__.py Initialize the sound package 408 formats/ Subpackage for file format conversions 409 __init__.py 410 wavread.py 411 wavwrite.py 412 aiffread.py 413 aiffwrite.py 414 auread.py 415 auwrite.py 416 ... 417 effects/ Subpackage for sound effects 418 __init__.py 419 echo.py 420 surround.py 421 reverse.py 422 ... 423 filters/ Subpackage for filters 424 __init__.py 425 equalizer.py 426 vocoder.py 427 karaoke.py 428 ... 429 430When importing the package, Python searches through the directories on 431``sys.path`` looking for the package subdirectory. 432 433The :file:`__init__.py` files are required to make Python treat directories 434containing the file as packages. This prevents directories with a common name, 435such as ``string``, unintentionally hiding valid modules that occur later 436on the module search path. In the simplest case, :file:`__init__.py` can just be 437an empty file, but it can also execute initialization code for the package or 438set the ``__all__`` variable, described later. 439 440Users of the package can import individual modules from the package, for 441example:: 442 443 import sound.effects.echo 444 445This loads the submodule :mod:`sound.effects.echo`. It must be referenced with 446its full name. :: 447 448 sound.effects.echo.echofilter(input, output, delay=0.7, atten=4) 449 450An alternative way of importing the submodule is:: 451 452 from sound.effects import echo 453 454This also loads the submodule :mod:`echo`, and makes it available without its 455package prefix, so it can be used as follows:: 456 457 echo.echofilter(input, output, delay=0.7, atten=4) 458 459Yet another variation is to import the desired function or variable directly:: 460 461 from sound.effects.echo import echofilter 462 463Again, this loads the submodule :mod:`echo`, but this makes its function 464:func:`echofilter` directly available:: 465 466 echofilter(input, output, delay=0.7, atten=4) 467 468Note that when using ``from package import item``, the item can be either a 469submodule (or subpackage) of the package, or some other name defined in the 470package, like a function, class or variable. The ``import`` statement first 471tests whether the item is defined in the package; if not, it assumes it is a 472module and attempts to load it. If it fails to find it, an :exc:`ImportError` 473exception is raised. 474 475Contrarily, when using syntax like ``import item.subitem.subsubitem``, each item 476except for the last must be a package; the last item can be a module or a 477package but can't be a class or function or variable defined in the previous 478item. 479 480 481.. _tut-pkg-import-star: 482 483Importing \* From a Package 484--------------------------- 485 486.. index:: single: __all__ 487 488Now what happens when the user writes ``from sound.effects import *``? Ideally, 489one would hope that this somehow goes out to the filesystem, finds which 490submodules are present in the package, and imports them all. This could take a 491long time and importing sub-modules might have unwanted side-effects that should 492only happen when the sub-module is explicitly imported. 493 494The only solution is for the package author to provide an explicit index of the 495package. The :keyword:`import` statement uses the following convention: if a package's 496:file:`__init__.py` code defines a list named ``__all__``, it is taken to be the 497list of module names that should be imported when ``from package import *`` is 498encountered. It is up to the package author to keep this list up-to-date when a 499new version of the package is released. Package authors may also decide not to 500support it, if they don't see a use for importing \* from their package. For 501example, the file :file:`sound/effects/__init__.py` could contain the following 502code:: 503 504 __all__ = ["echo", "surround", "reverse"] 505 506This would mean that ``from sound.effects import *`` would import the three 507named submodules of the :mod:`sound` package. 508 509If ``__all__`` is not defined, the statement ``from sound.effects import *`` 510does *not* import all submodules from the package :mod:`sound.effects` into the 511current namespace; it only ensures that the package :mod:`sound.effects` has 512been imported (possibly running any initialization code in :file:`__init__.py`) 513and then imports whatever names are defined in the package. This includes any 514names defined (and submodules explicitly loaded) by :file:`__init__.py`. It 515also includes any submodules of the package that were explicitly loaded by 516previous :keyword:`import` statements. Consider this code:: 517 518 import sound.effects.echo 519 import sound.effects.surround 520 from sound.effects import * 521 522In this example, the :mod:`echo` and :mod:`surround` modules are imported in the 523current namespace because they are defined in the :mod:`sound.effects` package 524when the ``from...import`` statement is executed. (This also works when 525``__all__`` is defined.) 526 527Although certain modules are designed to export only names that follow certain 528patterns when you use ``import *``, it is still considered bad practice in 529production code. 530 531Remember, there is nothing wrong with using ``from package import 532specific_submodule``! In fact, this is the recommended notation unless the 533importing module needs to use submodules with the same name from different 534packages. 535 536 537.. _intra-package-references: 538 539Intra-package References 540------------------------ 541 542When packages are structured into subpackages (as with the :mod:`sound` package 543in the example), you can use absolute imports to refer to submodules of siblings 544packages. For example, if the module :mod:`sound.filters.vocoder` needs to use 545the :mod:`echo` module in the :mod:`sound.effects` package, it can use ``from 546sound.effects import echo``. 547 548You can also write relative imports, with the ``from module import name`` form 549of import statement. These imports use leading dots to indicate the current and 550parent packages involved in the relative import. From the :mod:`surround` 551module for example, you might use:: 552 553 from . import echo 554 from .. import formats 555 from ..filters import equalizer 556 557Note that relative imports are based on the name of the current module. Since 558the name of the main module is always ``"__main__"``, modules intended for use 559as the main module of a Python application must always use absolute imports. 560 561 562Packages in Multiple Directories 563-------------------------------- 564 565Packages support one more special attribute, :attr:`__path__`. This is 566initialized to be a list containing the name of the directory holding the 567package's :file:`__init__.py` before the code in that file is executed. This 568variable can be modified; doing so affects future searches for modules and 569subpackages contained in the package. 570 571While this feature is not often needed, it can be used to extend the set of 572modules found in a package. 573 574 575.. rubric:: Footnotes 576 577.. [#] In fact function definitions are also 'statements' that are 'executed'; the 578 execution of a module-level function definition enters the function name in 579 the module's global symbol table. 580