paths in modules

Brandon Mintern mintern at cse.ohio-state.edu
Thu Feb 22 11:13:46 EST 2007


I am developing a project in Python which uses several external utilities.
For convenience, I am wrapping these accesses in a module. The problem is
that I cannot be sure where these modules are imported from, so I am
trying to figure out how to reliably execute e.g. a popen call.  Example
layout:

toplevel_dir
+-main script
+-wrapper_dir
  +-some_wrapper
  +-utility_dir
    +-some_external_utility

So in my main script, I might say:

from wrapper_dir import some_wrapper

some_wrapper.use_external_utility()


And then in some_wrapper, I would have code like:

import os

def use_external_utility():
  f = os.popen('utility_dir/some_external_utility')
  lines = f.readlines()
  f.close()
  return lines


Of course, the problem with that approach is that it fails because there
is no utility_dir in the CWD, which is actually top_level_dir.  So my
question is whether there is any way to specify that specified paths are
relative to the module's directory rather than the importing file's
directory.  I would really like to avoid kludging together some solution
that involves passing variables or having knowledge of where my module is
being imported from.

I am hoping that there is some simple solution to this problem that I
simply haven't found in my searches so far.  If so, I will humbly accept
any ridicule that comes along with said simple solution :-).

Thanks in advance,
Brandon



More information about the Python-list mailing list