B
Brandon Mintern
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
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