Commit f0229aa5 authored by Sandro Tosi's avatar Sandro Tosi

Issue #11948: clarify modules search path

parent 972cfb91
......@@ -159,24 +159,22 @@ The Module Search Path
.. index:: triple: module; search; path
When a module named :mod:`spam` is imported, the interpreter searches for a
file named :file:`spam.py` in the directory containing the input script and
then in the list of directories specified by the environment variable
:envvar:`PYTHONPATH`. This has the same syntax as the shell variable
:envvar:`PATH`, that is, a list of directory names. When :envvar:`PYTHONPATH`
is not set, or when the file is not found there, the search continues in an
installation-dependent default path; on Unix, this is usually
:file:`.:/usr/local/lib/python`.
Actually, modules are searched in the list of directories given by the variable
``sys.path`` which is initialized from the directory containing the input script
(or the current directory), :envvar:`PYTHONPATH` and the installation- dependent
default. This allows Python programs that know what they're doing to modify or
replace the module search path. Note that because the directory containing the
script being run is on the search path, it is important that the script not have
the same name as a standard module, or Python will attempt to load the script as
a module when that module is imported. This will generally be an error. See
section :ref:`tut-standardmodules` for more information.
When a module named :mod:`spam` is imported, the interpreter first searches for
a built-in module with that name. If not found, it then searches for a file
named :file:`spam.py` in a list of directories given by the variable
:data:`sys.path`. :data:`sys.path` is initialized from these locations:
* the directory containing the input script (or the current directory).
* :envvar:`PYTHONPATH` (a list of directory names, with the same syntax as the
shell variable :envvar:`PATH`).
* the installation-dependent default.
After initialization, Python programs can modify :data:`sys.path`. The
directory containing the script being run is placed at the beginning of the
search path, ahead of the standard library path. This means that scripts in that
directory will be loaded instead of modules of the same name in the library
directory. This is an error unless the replacement is intended. See section
:ref:`tut-standardmodules` for more information.
.. %
Do we need stuff on zip files etc. ? DUBOIS
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment