[GRASS-user] running a simple python script on windows

Dear Grass friends,

I prepared a simple python3 script that runs correctly using Grass 7.8 on GNU/Linux.

I put the module in the script folder of /usr/lib/grass78. The parser is able to open the interface and the module runs.

Someone asked me to run the same script using Grass on Windows (the standalone version 7.8).

I put the script on the "C:\Program Files\GRASS GIS 7.8\scripts" folder.

When I run a the script, even only with the --help option (mySimpleGrassScript --help) from the Layer Manager Console, i get the error listed at the end of this e-mail.

May I kindly ask your help to understand what I have to check or to modify in order to run the code on window ?

thank you very much

Ivan

The error I get:

______________________

Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\task.py", line 474, in
get_interface_description

stderr=PIPE)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\core.py", line 57, in __init__

.format(args[0]))
OSError
:
Cannot find the executable mySimpleGrassScript
During handling of the above exception, another exception
occurred:
Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\forms.py", line 2866, in
ParseCommand

blackList=_blackList)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\task.py", line 522, in
parse_interface

tree = etree.fromstring(get_interface_description(name))
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\task.py", line 502, in
get_interface_description

"\n\nDetails: <{det}>").format(cmd=cmd, det=e))
grass.exceptions
.
ScriptError
:
Unable to fetch interface description for command
'<mySimpleGrassScript>'.
Details: <Cannot find the executable
mySimpleGrassScript>
During handling of the above exception, another exception
occurred:
Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\core\gconsole.py", line 493, in RunCmd

task = GUI(show=None).ParseCommand(command)
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\forms.py", line 2868, in
ParseCommand

raise gcmd.GException(e.value)
core.gcmd
.
GException
:
Unable to fetch interface description for command
'<mySimpleGrassScript>'.
Details: <Cannot find the executable
mySimpleGrassScript>
During handling of the above exception, another exception
occurred:
Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\prompt.py", line 413, in
OnKeyPressed

self._runCmd(self.GetCurLine()[0].strip())
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\prompt.py", line 120, in _runCmd

self.promptRunCmd.emit(cmd=cmd)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\pydispatch\signal.py", line 229, in
emit

dispatcher.send(signal=self, *args, **kwargs)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\pydispatch\dispatcher.py", line 349, in
send

**named
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\pydispatch\robustapply.py", line 60, in
robustApply

return receiver(*arguments, **named)
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\goutput.py", line 120, in <lambda>

self._gconsole.RunCmd(command=cmd))
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\core\gconsole.py", line 496, in RunCmd

message=unicode(e),
NameError
:
name 'unicode' is not defined

ivan.marchesini wrote

Dear Grass friends,

I prepared a simple python3 script that runs correctly using Grass 7.8
on GNU/Linux.

I put the module in the script folder of /usr/lib/grass78. The parser
is able to open the interface and the module runs.

Someone asked me to run the same script using Grass on Windows (the
standalone version 7.8).

I put the script on the "C:\Program Files\GRASS GIS 7.8\scripts" folder.

When I run a the script, even only with the --help option
(mySimpleGrassScript --help) from the Layer Manager Console, i get the
error listed at the end of this e-mail.

May I kindly ask your help to understand what I have to check or to
modify in order to run the code on window ?

thank you very much

Ivan

The error I get:

______________________

Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\task.py", line 474, in
get_interface_description

stderr=PIPE)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\core.py", line 57, in __init__

.format(args[0]))
OSError
:
Cannot find the executable mySimpleGrassScript
During handling of the above exception, another exception
occurred:
Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\forms.py", line 2866, in
ParseCommand

blackList=_blackList)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\task.py", line 522, in
parse_interface

tree = etree.fromstring(get_interface_description(name))
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\script\task.py", line 502, in
get_interface_description

"\n\nDetails: <{det}>").format(cmd=cmd, det=e))
grass.exceptions
.
ScriptError
:
Unable to fetch interface description for command
'
<mySimpleGrassScript>
'.
Details:
<Cannot find the executable
mySimpleGrassScript>
During handling of the above exception, another exception
occurred:
Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\core\gconsole.py", line 493, in RunCmd

task = GUI(show=None).ParseCommand(command)
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\forms.py", line 2868, in
ParseCommand

raise gcmd.GException(e.value)
core.gcmd
.
GException
:
Unable to fetch interface description for command
'
<mySimpleGrassScript>
'.
Details:
<Cannot find the executable
mySimpleGrassScript>
During handling of the above exception, another exception
occurred:
Traceback (most recent call last):
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\prompt.py", line 413, in
OnKeyPressed

self._runCmd(self.GetCurLine()[0].strip())
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\prompt.py", line 120, in _runCmd

self.promptRunCmd.emit(cmd=cmd)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\pydispatch\signal.py", line 229, in
emit

dispatcher.send(signal=self, *args, **kwargs)
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\pydispatch\dispatcher.py", line 349, in
send

**named
File "C:\Program Files\GRASS GIS
7.8\etc\python\grass\pydispatch\robustapply.py", line 60, in
robustApply

return receiver(*arguments, **named)
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\gui_core\goutput.py", line 120, in
<lambda>
self._gconsole.RunCmd(command=cmd))
File "C:\Program Files\GRASS GIS
7.8\gui\wxpython\core\gconsole.py", line 496, in RunCmd

message=unicode(e),
NameError
:
name 'unicode' is not defined

you need a corresponding bat-file in the \bin subfolder, e.g.

grass78\bin\i.tasscap.bat

with this content

@"%GRASS_PYTHON%" "%GISBASE%/scripts/i.tasscap.py" %*

which you have to adapt accordingly.

-----
best regards
Helmut
--
Sent from: http://osgeo-org.1560.x6.nabble.com/Grass-Users-f3884509.html