bbxx789_05ss at yahoo.com
Thu Apr 19 01:09:44 CEST 2007
On Apr 18, 10:34 am, genk... at gmail.com wrote:
> I thought import used relative paths from either the python executable
> or the script being executed. I have a script pulling in code from an
> arbitrary directory. How is this happening?
> It's a RHEL 4 environment by the way. I couldn't find any relevant
> environment variables.
> Thanks from a newbie for any insight.
>From the online python tutorial here:
There is this:
6.1.1 The Module Search Path
When a module named spam is imported, the interpreter searches for a
file named spam.py in the current directory, and then in the list of
directories specified by the environment variable PYTHONPATH. This has
the same syntax as the shell variable PATH, that is, a list of
directory names. When 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 .:/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), 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 6.2, ``Standard Modules,'' for more information.
You can use the following trick to import one of your own modules when
isn't in the current directory(and doesn't happen to be in PYTHONPATH
or the default path):
sys.path.append("relative path or absolute path to dir with the
module") # temporarily changes sys.path
More information about the Python-list