[GRASS-user] Re: Envoking GRASS in a python script

Glynn Clements glynn at gclements.plus.com
Wed Oct 19 16:32:18 EDT 2011


kungphil wrote:

> Just a couple of things, this...
> 
> os.environ['PATH'] = os.pathsep.join(os.environ['PATH'],bindir,scriptdir)
> 
> ...should have [] around the arguments so as to make a list as the join
> function can take only one argument, so it looks like this...
> 
> os.environ['PATH'] = os.pathsep.join([os.environ['PATH'],bindir,scriptdir])

Right. os.path.join() is a function named "join" in the os.path
module, and accepts multiple arguments. os.pathsep.join() is the
"join" method of the string class, called on the string os.pathsep,
and expects a single iterable as its argument. I got the two mixed up.

> And I had to set PYTHONPATH in my .bash_profile to get it to recognise the
> grass module, not sure why.

Python reads PYTHONPATH at startup, before executing the script. 
Setting os.environ['PYTHONPATH'] won't have any effect upon the
current Python process, only upon processes descended from it. 
However, you can modify sys.path directly, and that should affect
subsequent imports within the same script.

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-user mailing list