1 .. _tut-modules: 2 3 ******* 4 Modules 5 ******* 6 7 If you quit from the Python interpreter and enter it again, the definitions you 8 have made (functions and variables) are lost. Therefore, if you want to write a 9 somewhat longer program, you are better off using a text editor to prepare the 10 input for the interpreter and running it with that file as input instead. This 11 is known as creating a *script*. As your program gets longer, you may want to 12 split it into several files for easier maintenance. You may also want to use a 13 handy function that you've written in several programs without copying its 14 definition into each program. 15 16 To support this, Python has a way to put definitions in a file and use them in a 17 script 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 19 the *main* module (the collection of variables that you have access to in a 20 script executed at the top level and in calculator mode). 21 22 A module is a file containing Python definitions and statements. The file name 23 is the module name with the suffix :file:`.py` appended. Within a module, the 24 module'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 26 called :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: 33 print b, 34 a, b = b, a+b 35 36 def fib2(n): # return Fibonacci series up to n 37 result = [] 38 a, b = 0, 1 39 while b < n: 40 result.append(b) 41 a, b = b, a+b 42 return result 43 44 Now enter the Python interpreter and import this module with the following 45 command:: 46 47 >>> import fibo 48 49 This does not enter the names of the functions defined in ``fibo`` directly in 50 the current symbol table; it only enters the module name ``fibo`` there. Using 51 the module name you can access the functions:: 52 53 >>> fibo.fib(1000) 54 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 55 >>> fibo.fib2(100) 56 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 57 >>> fibo.__name__ 58 'fibo' 59 60 If you intend to use a function often you can assign it to a local name:: 61 62 >>> fib = fibo.fib 63 >>> fib(500) 64 1 1 2 3 5 8 13 21 34 55 89 144 233 377 65 66 67 .. _tut-moremodules: 68 69 More on Modules 70 =============== 71 72 A module can contain executable statements as well as function definitions. 73 These statements are intended to initialize the module. They are executed only 74 the *first* time the module name is encountered in an import statement. [#]_ 75 (They are also run if the file is executed as a script.) 76 77 Each module has its own private symbol table, which is used as the global symbol 78 table by all functions defined in the module. Thus, the author of a module can 79 use global variables in the module without worrying about accidental clashes 80 with a user's global variables. On the other hand, if you know what you are 81 doing you can touch a module's global variables with the same notation used to 82 refer to its functions, ``modname.itemname``. 83 84 Modules can import other modules. It is customary but not required to place all 85 :keyword:`import` statements at the beginning of a module (or script, for that 86 matter). The imported module names are placed in the importing module's global 87 symbol table. 88 89 There is a variant of the :keyword:`import` statement that imports names from a 90 module directly into the importing module's symbol table. For example:: 91 92 >>> from fibo import fib, fib2 93 >>> fib(500) 94 1 1 2 3 5 8 13 21 34 55 89 144 233 377 95 96 This does not introduce the module name from which the imports are taken in the 97 local symbol table (so in the example, ``fibo`` is not defined). 98 99 There is even a variant to import all names that a module defines:: 100 101 >>> from fibo import * 102 >>> fib(500) 103 1 1 2 3 5 8 13 21 34 55 89 144 233 377 104 105 This imports all names except those beginning with an underscore (``_``). 106 107 Note that in general the practice of importing ``*`` from a module or package is 108 frowned upon, since it often causes poorly readable code. However, it is okay to 109 use it to save typing in interactive sessions. 110 111 .. note:: 112 113 For efficiency reasons, each module is only imported once per interpreter 114 session. Therefore, if you change your modules, you must restart the 115 interpreter -- or, if it's just one module you want to test interactively, 116 use :func:`reload`, e.g. ``reload(modulename)``. 117 118 119 .. _tut-modulesasscripts: 120 121 Executing modules as scripts 122 ---------------------------- 123 124 When you run a Python module with :: 125 126 python fibo.py <arguments> 127 128 the code in the module will be executed, just as if you imported it, but with 129 the ``__name__`` set to ``"__main__"``. That means that by adding this code at 130 the end of your module:: 131 132 if __name__ == "__main__": 133 import sys 134 fib(int(sys.argv[1])) 135 136 you can make the file usable as a script as well as an importable module, 137 because the code that parses the command line only runs if the module is 138 executed as the "main" file: 139 140 .. code-block:: shell-session 141 142 $ python fibo.py 50 143 1 1 2 3 5 8 13 21 34 144 145 If the module is imported, the code is not run:: 146 147 >>> import fibo 148 >>> 149 150 This is often used either to provide a convenient user interface to a module, or 151 for testing purposes (running the module as a script executes a test suite). 152 153 154 .. _tut-searchpath: 155 156 The Module Search Path 157 ---------------------- 158 159 .. index:: triple: module; search; path 160 161 When a module named :mod:`spam` is imported, the interpreter first searches for 162 a built-in module with that name. If not found, it then searches for a file 163 named :file:`spam.py` in a list of directories given by the variable 164 :data:`sys.path`. :data:`sys.path` is initialized from these locations: 165 166 * the directory containing the input script (or the current directory). 167 * :envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the 168 shell variable :envvar:`PATH`). 169 * the installation-dependent default. 170 171 After initialization, Python programs can modify :data:`sys.path`. The 172 directory containing the script being run is placed at the beginning of the 173 search path, ahead of the standard library path. This means that scripts in that 174 directory will be loaded instead of modules of the same name in the library 175 directory. This is an error unless the replacement is intended. See section 176 :ref:`tut-standardmodules` for more information. 177 178 179 "Compiled" Python files 180 ----------------------- 181 182 As an important speed-up of the start-up time for short programs that use a lot 183 of standard modules, if a file called :file:`spam.pyc` exists in the directory 184 where :file:`spam.py` is found, this is assumed to contain an 185 already-"byte-compiled" version of the module :mod:`spam`. The modification time 186 of the version of :file:`spam.py` used to create :file:`spam.pyc` is recorded in 187 :file:`spam.pyc`, and the :file:`.pyc` file is ignored if these don't match. 188 189 Normally, you don't need to do anything to create the :file:`spam.pyc` file. 190 Whenever :file:`spam.py` is successfully compiled, an attempt is made to write 191 the compiled version to :file:`spam.pyc`. It is not an error if this attempt 192 fails; if for any reason the file is not written completely, the resulting 193 :file:`spam.pyc` file will be recognized as invalid and thus ignored later. The 194 contents of the :file:`spam.pyc` file are platform independent, so a Python 195 module directory can be shared by machines of different architectures. 196 197 Some tips for experts: 198 199 * When the Python interpreter is invoked with the :option:`-O` flag, optimized 200 code is generated and stored in :file:`.pyo` files. The optimizer currently 201 doesn't help much; it only removes :keyword:`assert` statements. When 202 :option:`-O` is used, *all* :term:`bytecode` is optimized; ``.pyc`` files are 203 ignored and ``.py`` files are compiled to optimized bytecode. 204 205 * Passing two :option:`-O` flags to the Python interpreter (:option:`-OO`) will 206 cause the bytecode compiler to perform optimizations that could in some rare 207 cases result in malfunctioning programs. Currently only ``__doc__`` strings are 208 removed from the bytecode, resulting in more compact :file:`.pyo` files. Since 209 some programs may rely on having these available, you should only use this 210 option if you know what you're doing. 211 212 * A program doesn't run any faster when it is read from a :file:`.pyc` or 213 :file:`.pyo` file than when it is read from a :file:`.py` file; the only thing 214 that's faster about :file:`.pyc` or :file:`.pyo` files is the speed with which 215 they are loaded. 216 217 * When a script is run by giving its name on the command line, the bytecode for 218 the script is never written to a :file:`.pyc` or :file:`.pyo` file. Thus, the 219 startup time of a script may be reduced by moving most of its code to a module 220 and having a small bootstrap script that imports that module. It is also 221 possible to name a :file:`.pyc` or :file:`.pyo` file directly on the command 222 line. 223 224 * It is possible to have a file called :file:`spam.pyc` (or :file:`spam.pyo` 225 when :option:`-O` is used) without a file :file:`spam.py` for the same module. 226 This can be used to distribute a library of Python code in a form that is 227 moderately hard to reverse engineer. 228 229 .. index:: module: compileall 230 231 * The module :mod:`compileall` can create :file:`.pyc` files (or :file:`.pyo` 232 files when :option:`-O` is used) for all modules in a directory. 233 234 235 .. _tut-standardmodules: 236 237 Standard Modules 238 ================ 239 240 .. index:: module: sys 241 242 Python comes with a library of standard modules, described in a separate 243 document, the Python Library Reference ("Library Reference" hereafter). Some 244 modules are built into the interpreter; these provide access to operations that 245 are not part of the core of the language but are nevertheless built in, either 246 for efficiency or to provide access to operating system primitives such as 247 system calls. The set of such modules is a configuration option which also 248 depends on the underlying platform. For example, the :mod:`winreg` module is only 249 provided on Windows systems. One particular module deserves some attention: 250 :mod:`sys`, which is built into every Python interpreter. The variables 251 ``sys.ps1`` and ``sys.ps2`` define the strings used as primary and secondary 252 prompts:: 253 254 >>> import sys 255 >>> sys.ps1 256 '>>> ' 257 >>> sys.ps2 258 '... ' 259 >>> sys.ps1 = 'C> ' 260 C> print 'Yuck!' 261 Yuck! 262 C> 263 264 265 These two variables are only defined if the interpreter is in interactive mode. 266 267 The variable ``sys.path`` is a list of strings that determines the interpreter's 268 search path for modules. It is initialized to a default path taken from the 269 environment variable :envvar:`PYTHONPATH`, or from a built-in default if 270 :envvar:`PYTHONPATH` is not set. You can modify it using standard list 271 operations:: 272 273 >>> import sys 274 >>> sys.path.append('/ufs/guido/lib/python') 275 276 277 .. _tut-dir: 278 279 The :func:`dir` Function 280 ======================== 281 282 The built-in function :func:`dir` is used to find out which names a module 283 defines. It returns a sorted list of strings:: 284 285 >>> import fibo, sys 286 >>> dir(fibo) 287 ['__name__', 'fib', 'fib2'] 288 >>> dir(sys) # doctest: +NORMALIZE_WHITESPACE 289 ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', 290 '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', 291 '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv', 292 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 293 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 294 'exc_traceback', 'exc_type', 'exc_value', 'excepthook', 'exec_prefix', 295 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 296 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 297 'getfilesystemencoding', 'getobjects', 'getprofile', 'getrecursionlimit', 298 'getrefcount', 'getsizeof', 'gettotalrefcount', 'gettrace', 'hexversion', 299 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 300 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 301 'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile', 302 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 303 'version', 'version_info', 'warnoptions'] 304 305 Without arguments, :func:`dir` lists the names you have defined currently:: 306 307 >>> a = [1, 2, 3, 4, 5] 308 >>> import fibo 309 >>> fib = fibo.fib 310 >>> dir() 311 ['__builtins__', '__name__', '__package__', 'a', 'fib', 'fibo', 'sys'] 312 313 Note that it lists all types of names: variables, modules, functions, etc. 314 315 .. index:: module: __builtin__ 316 317 :func:`dir` does not list the names of built-in functions and variables. If you 318 want a list of those, they are defined in the standard module 319 :mod:`__builtin__`:: 320 321 >>> import __builtin__ 322 >>> dir(__builtin__) # doctest: +NORMALIZE_WHITESPACE 323 ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 324 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 325 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 326 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 327 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 328 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 329 'NotImplementedError', 'OSError', 'OverflowError', 330 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 331 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 332 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 333 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 334 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 335 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 336 'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__', 337 '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring', 338 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 339 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 340 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 341 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 342 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 343 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 344 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 345 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 346 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 347 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 348 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip'] 349 350 351 .. _tut-packages: 352 353 Packages 354 ======== 355 356 Packages are a way of structuring Python's module namespace by using "dotted 357 module names". For example, the module name :mod:`A.B` designates a submodule 358 named ``B`` in a package named ``A``. Just like the use of modules saves the 359 authors of different modules from having to worry about each other's global 360 variable names, the use of dotted module names saves the authors of multi-module 361 packages like NumPy or the Python Imaging Library from having to worry about 362 each other's module names. 363 364 Suppose you want to design a collection of modules (a "package") for the uniform 365 handling of sound files and sound data. There are many different sound file 366 formats (usually recognized by their extension, for example: :file:`.wav`, 367 :file:`.aiff`, :file:`.au`), so you may need to create and maintain a growing 368 collection of modules for the conversion between the various file formats. 369 There are also many different operations you might want to perform on sound data 370 (such as mixing, adding echo, applying an equalizer function, creating an 371 artificial stereo effect), so in addition you will be writing a never-ending 372 stream of modules to perform these operations. Here's a possible structure for 373 your package (expressed in terms of a hierarchical filesystem): 374 375 .. code-block:: text 376 377 sound/ Top-level package 378 __init__.py Initialize the sound package 379 formats/ Subpackage for file format conversions 380 __init__.py 381 wavread.py 382 wavwrite.py 383 aiffread.py 384 aiffwrite.py 385 auread.py 386 auwrite.py 387 ... 388 effects/ Subpackage for sound effects 389 __init__.py 390 echo.py 391 surround.py 392 reverse.py 393 ... 394 filters/ Subpackage for filters 395 __init__.py 396 equalizer.py 397 vocoder.py 398 karaoke.py 399 ... 400 401 When importing the package, Python searches through the directories on 402 ``sys.path`` looking for the package subdirectory. 403 404 The :file:`__init__.py` files are required to make Python treat the directories 405 as containing packages; this is done to prevent directories with a common name, 406 such as ``string``, from unintentionally hiding valid modules that occur later 407 on the module search path. In the simplest case, :file:`__init__.py` can just be 408 an empty file, but it can also execute initialization code for the package or 409 set the ``__all__`` variable, described later. 410 411 Users of the package can import individual modules from the package, for 412 example:: 413 414 import sound.effects.echo 415 416 This loads the submodule :mod:`sound.effects.echo`. It must be referenced with 417 its full name. :: 418 419 sound.effects.echo.echofilter(input, output, delay=0.7, atten=4) 420 421 An alternative way of importing the submodule is:: 422 423 from sound.effects import echo 424 425 This also loads the submodule :mod:`echo`, and makes it available without its 426 package prefix, so it can be used as follows:: 427 428 echo.echofilter(input, output, delay=0.7, atten=4) 429 430 Yet another variation is to import the desired function or variable directly:: 431 432 from sound.effects.echo import echofilter 433 434 Again, this loads the submodule :mod:`echo`, but this makes its function 435 :func:`echofilter` directly available:: 436 437 echofilter(input, output, delay=0.7, atten=4) 438 439 Note that when using ``from package import item``, the item can be either a 440 submodule (or subpackage) of the package, or some other name defined in the 441 package, like a function, class or variable. The ``import`` statement first 442 tests whether the item is defined in the package; if not, it assumes it is a 443 module and attempts to load it. If it fails to find it, an :exc:`ImportError` 444 exception is raised. 445 446 Contrarily, when using syntax like ``import item.subitem.subsubitem``, each item 447 except for the last must be a package; the last item can be a module or a 448 package but can't be a class or function or variable defined in the previous 449 item. 450 451 452 .. _tut-pkg-import-star: 453 454 Importing \* From a Package 455 --------------------------- 456 457 .. index:: single: __all__ 458 459 Now what happens when the user writes ``from sound.effects import *``? Ideally, 460 one would hope that this somehow goes out to the filesystem, finds which 461 submodules are present in the package, and imports them all. This could take a 462 long time and importing sub-modules might have unwanted side-effects that should 463 only happen when the sub-module is explicitly imported. 464 465 The only solution is for the package author to provide an explicit index of the 466 package. The :keyword:`import` statement uses the following convention: if a package's 467 :file:`__init__.py` code defines a list named ``__all__``, it is taken to be the 468 list of module names that should be imported when ``from package import *`` is 469 encountered. It is up to the package author to keep this list up-to-date when a 470 new version of the package is released. Package authors may also decide not to 471 support it, if they don't see a use for importing \* from their package. For 472 example, the file :file:`sound/effects/__init__.py` could contain the following 473 code:: 474 475 __all__ = ["echo", "surround", "reverse"] 476 477 This would mean that ``from sound.effects import *`` would import the three 478 named submodules of the :mod:`sound` package. 479 480 If ``__all__`` is not defined, the statement ``from sound.effects import *`` 481 does *not* import all submodules from the package :mod:`sound.effects` into the 482 current namespace; it only ensures that the package :mod:`sound.effects` has 483 been imported (possibly running any initialization code in :file:`__init__.py`) 484 and then imports whatever names are defined in the package. This includes any 485 names defined (and submodules explicitly loaded) by :file:`__init__.py`. It 486 also includes any submodules of the package that were explicitly loaded by 487 previous :keyword:`import` statements. Consider this code:: 488 489 import sound.effects.echo 490 import sound.effects.surround 491 from sound.effects import * 492 493 In this example, the :mod:`echo` and :mod:`surround` modules are imported in the 494 current namespace because they are defined in the :mod:`sound.effects` package 495 when the ``from...import`` statement is executed. (This also works when 496 ``__all__`` is defined.) 497 498 Although certain modules are designed to export only names that follow certain 499 patterns when you use ``import *``, it is still considered bad practice in 500 production code. 501 502 Remember, there is nothing wrong with using ``from Package import 503 specific_submodule``! In fact, this is the recommended notation unless the 504 importing module needs to use submodules with the same name from different 505 packages. 506 507 508 Intra-package References 509 ------------------------ 510 511 The submodules often need to refer to each other. For example, the 512 :mod:`surround` module might use the :mod:`echo` module. In fact, such 513 references are so common that the :keyword:`import` statement first looks in the 514 containing package before looking in the standard module search path. Thus, the 515 :mod:`surround` module can simply use ``import echo`` or ``from echo import 516 echofilter``. If the imported module is not found in the current package (the 517 package of which the current module is a submodule), the :keyword:`import` 518 statement looks for a top-level module with the given name. 519 520 When packages are structured into subpackages (as with the :mod:`sound` package 521 in the example), you can use absolute imports to refer to submodules of siblings 522 packages. For example, if the module :mod:`sound.filters.vocoder` needs to use 523 the :mod:`echo` module in the :mod:`sound.effects` package, it can use ``from 524 sound.effects import echo``. 525 526 Starting with Python 2.5, in addition to the implicit relative imports described 527 above, you can write explicit relative imports with the ``from module import 528 name`` form of import statement. These explicit relative imports use leading 529 dots to indicate the current and parent packages involved in the relative 530 import. From the :mod:`surround` module for example, you might use:: 531 532 from . import echo 533 from .. import formats 534 from ..filters import equalizer 535 536 Note that both explicit and implicit relative imports are based on the name of 537 the current module. Since the name of the main module is always ``"__main__"``, 538 modules intended for use as the main module of a Python application should 539 always use absolute imports. 540 541 542 Packages in Multiple Directories 543 -------------------------------- 544 545 Packages support one more special attribute, :attr:`__path__`. This is 546 initialized to be a list containing the name of the directory holding the 547 package's :file:`__init__.py` before the code in that file is executed. This 548 variable can be modified; doing so affects future searches for modules and 549 subpackages contained in the package. 550 551 While this feature is not often needed, it can be used to extend the set of 552 modules found in a package. 553 554 555 .. rubric:: Footnotes 556 557 .. [#] In fact function definitions are also 'statements' that are 'executed'; the 558 execution of a module-level function definition enters the function name in 559 the module's global symbol table. 560 561