[GRASS-user] grass 6.4 rc5 and python scripting

Michael Barton michael.barton at asu.edu
Tue Jun 30 11:04:14 EDT 2009



On Jun 30, 2009, at 7:10 AM, grass-user-request at lists.osgeo.org wrote:

> Date: Tue, 30 Jun 2009 15:58:01 +0200
> From: Moritz Lennert <mlennert at club.worldonline.be>
> Subject: Re: [GRASS-user] grass 6.4 rc5 and python scripting
> To: Ricardo Filipe Soares Garcia da <ricardo.garcia.silva at gmail.com>
> Cc: grass-user at lists.osgeo.org
> Message-ID: <4A4A19E9.6030501 at club.worldonline.be>
> Content-Type: text/plain; charset=UTF-8; format=flowed
>
> On 30/06/09 12:58, Ricardo Filipe Soares Garcia da wrote:
>> Hello list
>>
>> I compiled grass-6.4.0RC5 (downloaded a tarball from the main site).
>> I'd like to learn about scripting grass with python.
>>
>> Following the first sample script at the GRASS Python scripting
>> library (http://download.osgeo.org/grass/grass6_progman/pythonlib.html 
>> )
>> I created a test file called teste.py, and placed it on the Desktop.
>> When I try to run it inside a GRASS session I am geting the following
>> error:
>>
>> GRASS 6.4.0RC5 (aeigT3):~/Desktop > ./teste.py
>> sh: teste.py: not found
>> Traceback (most recent call last):
>>  File "/usr/local/grass-6.4.0RC5/etc/wxpython/gui_modules/ 
>> menuform.py",
>> line 1931, in <module>
>>    GrassGUIApp( grassTask( sys.argv[1] ) ).MainLoop()
>>  File "/usr/local/grass-6.4.0RC5/etc/wxpython/gui_modules/ 
>> menuform.py",
>> line 335, in __init__
>>    xml.sax.parseString( getInterfaceDescription( grassModule ) ,
>> processTask( self ) )
>>  File "/usr/local/grass-6.4.0RC5/etc/wxpython/gui_modules/ 
>> menuform.py",
>> line 1748, in getInterfaceDescription
>>    raise IOError, _("Unable to fetch interface description for
>> command '%s'.") % cmd
>> IOError: Unable to fetch interface description for command  
>> 'teste.py'.
>>
>> The file contents are just a copy+paste from the online example. Can
>> someone point me to the cause of the error?
>
> In order for g.parser to work, the file teste.py needs to be in your
> PATH. So, you can do something like this:
>
> export PATH=$PATH:.
> ./teste.py
>
>
> Moritz

There are at least 3 ways for a GRASS to recognize and run a custom  
script of any kind, including Python.

1. Put it into a folder/directory already recognized by GRASS by  
default, such as $GISBASE/scripts (noted by Martin)
2. Change your executables PATH list (noted above by Moritz).
3. Set the GRASS_ADDON_PATH variable in the .grassrc6 file (or its  
equivalent in GRASS 7). For example, I could add...

GRASS_ADDON_PATH: /Users/Michael/Desktop;/Users/Michael/Documents

...and any script on my desktop or in my documents folder would be  
accessible to g.parser and GRASS. (Note: I'm not sure if ";" or  
something else should be the separator between paths). This is very  
convenient for having a permanent folder outside the main GRASS  
distribution location where you can put any custom scripts.

Michael



More information about the grass-user mailing list