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