Thanks for the direction! I have successfully worked through the examples on http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html except for the last one about adding a module interface to a script. I copied the code into a python file named module_interface.py. After I File-> "Launch script" and select module_interface.py, the module GUI pops up and prompts for the raster inputs and output. But, after clicking on "Run", the script reports the following message:
(Wed Mar 04 21:55:29 2015) module_interface araster=el_D782_6m@PERMANENT braster=el_D783_6m@PERMANENT output=el_r_6m 'module_interface' is not recognized as an internal or external command, operable program or batch file. (Wed Mar 04 21:55:29 2015) Command finished (0 sec) Anyone seen this message? Rob Parsons Raleigh NC On Sun, Mar 1, 2015 at 8:13 PM, <[email protected]> wrote: > Send grass-user mailing list submissions to > [email protected] > > To subscribe or unsubscribe via the World Wide Web, visit > http://lists.osgeo.org/mailman/listinfo/grass-user > or, via email, send a message with subject or body 'help' to > [email protected] > > You can reach the person managing the list at > [email protected] > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of grass-user digest..." > > > Today's Topics: > > 1. GRASS 7.0 Running Scripts (.\GRASS GIS 7.0.0\scripts) > (Rob Parsons) > 2. Re: GRASS 7.0 Running Scripts (.\GRASS GIS 7.0.0\scripts) > (Vaclav Petras) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sun, 1 Mar 2015 19:37:59 -0500 > From: Rob Parsons <[email protected]> > To: [email protected] > Subject: [GRASS-user] GRASS 7.0 Running Scripts (.\GRASS GIS > 7.0.0\scripts) > Message-ID: > < > cafvpspbh1xvpegff15hxkny0qeemueehp9bucv4fb9zgq_2...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Hello, > > How do I run scripts located in C:\Program Files (x86)\GRASS GIS > 7.0.0\scripts? > > I am learning GRASS 7.0.0 on Windows 7 by converting some GRASS 6.4 shell > scripts to GRASS 7 Python scripts (import grass.script as grass) and GRASS > 7 PyGRASS scripts (from grass.pygrass.modules import Module). > > My installation is working fine. I can manually run the commands (from a > shell script) in the "Command console" window of the "Layer Manager". For > example, I can enter "g.region swwake_30m -p" in the "Command prompt" area > and get the following results: > > > Sun Mar 01 12:32:30 > 2015) > g.region swwake_30m > -p > projection: 99 (Lambert Conformal Conic) > zone: 0 > datum: nad83 > ellipsoid: a=6378137 es=0.006694380022900787 > north: 228500 > south: 215000 > west: 630000 > east: 645000 > nsres: 30 > ewres: 30 > rows: 450 > cols: 500 > cells: 225000 > (Sun Mar 01 12:32:31 2015) Command finished (0 > sec) > > I am using the "Pythonwin" IDE to develop the scripts (C:\Program Files > (x86)\GRASS GIS 7.0.0\Python27\lib\site-packages\pythonwin\Pythonwin.exe). > In the "GRASS GIS 7.0.0 GUI" Command Prompt window I type "pythonwin" and > the IDE starts up. > > I have spent several days trying to understand how to create GRASS Python > scripts and GRASS PyGRASS scripts from the online documentation( > http://grasswiki.osgeo.org/wiki/GRASS_and_Python) and by studying the > script samples (C:\Program Files (x86)\GRASS GIS 7.0.0\scripts). I have not > been successful in getting example code to run but I am still working > through the documentation. > > But, I should be able to run scripts located in C:\Program Files > (x86)\GRASS GIS 7.0.0\scripts. > > Correct? > > 1. If I open .\scripts\d.what.rast.py in the Pythonwin IDE and try to run > it, I get this output: > > OSError error(9): The handle is invalid > Traceback (most recent call last): > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", > line 325, in RunScript > exec codeObject in __main__.__dict__ > File > "C:\Users\Rob\Documents\grassscripts\pygrass\make_raster_using_mapcalc.py", > line 8, in <module> > g.message("Filter elevation map by a threshold...") > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\etc\python\grass\pygrass\modules\shortcuts.py", line 46, in > __getattr__ > return self.cls('%s.%s' % (self.prefix, name.replace('_', '.'))) > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\etc\python\grass\pygrass\modules\interface\module.py", line 498, in > __init__ > raise GrassError(str_err % self.name) > GrassError: Error running: `g.message --interface-description`. > Traceback (most recent call last): > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", > line 325, in RunScript > exec codeObject in __main__.__dict__ > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > line 45, in <module> > main() > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > line 30, in main > options, flags = gcore.parser() > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\etc\python\grass\script\core.py", line 680, in parser > p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE) > File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", > line 703, in __init__ > errread, errwrite) = self._get_handles(stdin, stdout, stderr) > File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", > line 839, in _get_handles > p2cread = self._make_inheritable(p2cread) > File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", > line 878, in _make_inheritable > _subprocess.DUPLICATE_SAME_ACCESS) > WindowsError: [Error 6] The handle is invalid > Traceback (most recent call last): > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", > line 325, in RunScript > exec codeObject in __main__.__dict__ > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > line 45, in <module> > main() > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > line 30, in main > options, flags = gcore.parser() > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\etc\python\grass\script\core.py", line 680, in parser > p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE) > File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", > line 703, in __init__ > errread, errwrite) = self._get_handles(stdin, stdout, stderr) > File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", > line 839, in _get_handles > p2cread = self._make_inheritable(p2cread) > File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", > line 878, in _make_inheritable > _subprocess.DUPLICATE_SAME_ACCESS) > WindowsError: [Error 6] The handle is invalid > >>> > > 2. If I go to the "Python shell" tab on the "Layer Manager" and do File -> > Launch Script and browse to .\scripts\d.what.rast.py, I get this output: > > (Sun Mar 01 12:32:31 2015) Command finished (0 > sec) > Launching script 'C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\ > d.what.rast.py'... > Traceback (most recent call last): > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\gui\wxpython\gui_core\forms.py", line 718, in OnRun > > gcmd.Command(cmd) > File "C:\Program Files (x86)\GRASS GIS > 7.0.0\gui\wxpython\core\gcmd.py", line 397, in __init__ > > _("Error: ") + self.__GetError())) > core.gcmd > . > GException > : > Execution failed: 'd.what.rast map=elevation' > Details: > Error: > > Any ideas on what might be going on here? > > Rob Parsons > Raleigh NC > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://lists.osgeo.org/pipermail/grass-user/attachments/20150301/b41b2959/attachment-0001.html > > > > ------------------------------ > > Message: 2 > Date: Sun, 1 Mar 2015 20:12:57 -0500 > From: Vaclav Petras <[email protected]> > To: Rob Parsons <[email protected]> > Cc: GRASS user list <[email protected]> > Subject: Re: [GRASS-user] GRASS 7.0 Running Scripts (.\GRASS GIS > 7.0.0\scripts) > Message-ID: > <CABo5uVt7hq0QnHYqzV5O949h3URGxFOAjHNLxiMx= > [email protected]> > Content-Type: text/plain; charset="utf-8" > > On Sun, Mar 1, 2015 at 7:37 PM, Rob Parsons <[email protected]> wrote: > > > Hello, > > > > How do I run scripts located in C:\Program Files (x86)\GRASS GIS > > 7.0.0\scripts? > > > > I am learning GRASS 7.0.0 on Windows 7 by converting some GRASS 6.4 shell > > scripts to GRASS 7 Python scripts (import grass.script as grass) and > GRASS > > 7 PyGRASS scripts (from grass.pygrass.modules import Module). > > > > My installation is working fine. I can manually run the commands (from a > > shell script) in the "Command console" window of the "Layer Manager". For > > example, I can enter "g.region swwake_30m -p" in the "Command prompt" > area > > and get the following results: > > > > > > Sun Mar 01 12:32:30 > > 2015) > > g.region swwake_30m > > -p > > projection: 99 (Lambert Conformal Conic) > > zone: 0 > > datum: nad83 > > ellipsoid: a=6378137 es=0.006694380022900787 > > north: 228500 > > south: 215000 > > west: 630000 > > east: 645000 > > nsres: 30 > > ewres: 30 > > rows: 450 > > cols: 500 > > cells: 225000 > > (Sun Mar 01 12:32:31 2015) Command finished (0 > > sec) > > > > I am using the "Pythonwin" IDE to develop the scripts (C:\Program Files > > (x86)\GRASS GIS > 7.0.0\Python27\lib\site-packages\pythonwin\Pythonwin.exe). > > In the "GRASS GIS 7.0.0 GUI" Command Prompt window I type "pythonwin" and > > the IDE starts up. > > > > I have spent several days trying to understand how to create GRASS Python > > scripts and GRASS PyGRASS scripts from the online documentation( > > http://grasswiki.osgeo.org/wiki/GRASS_and_Python) and by studying the > > script samples (C:\Program Files (x86)\GRASS GIS 7.0.0\scripts). I have > not > > been successful in getting example code to run but I am still working > > through the documentation. > > > > Please try the example from: > > http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html > > I linked this page from documentation as well as the other Python wiki page > from the GRASS and Python page: > > http://grasswiki.osgeo.org/wiki/GRASS_Python_Scripting_Library > > Note that GRASS scripts by default cannot run from outside GRASS GIS > session (environment). This is probably not emphasized enough in the > documentation. > > But, I should be able to run scripts located in C:\Program Files > > (x86)\GRASS GIS 7.0.0\scripts. > > > > Correct? > > > > Correct but can you please try some other module than a d.* module, e.g. > r.out.xyz? d.* commands are somehow special (although in this case it > probably doesn't matter). > > > > 1. If I open .\scripts\d.what.rast.py in the Pythonwin IDE and try to > run > > it, I get this output: > > > > OSError error(9): The handle is invalid > > Traceback (most recent call last): > > File "C:\Program Files (x86)\GRASS GIS > > > 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", > > line 325, in RunScript > > exec codeObject in __main__.__dict__ > > File > > > "C:\Users\Rob\Documents\grassscripts\pygrass\make_raster_using_mapcalc.py", > > line 8, in <module> > > g.message("Filter elevation map by a threshold...") > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\etc\python\grass\pygrass\modules\shortcuts.py", line 46, in > > __getattr__ > > return self.cls('%s.%s' % (self.prefix, name.replace('_', '.'))) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\etc\python\grass\pygrass\modules\interface\module.py", line 498, in > > __init__ > > raise GrassError(str_err % self.name) > > GrassError: Error running: `g.message --interface-description`. > > Traceback (most recent call last): > > File "C:\Program Files (x86)\GRASS GIS > > > 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", > > line 325, in RunScript > > exec codeObject in __main__.__dict__ > > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > > line 45, in <module> > > main() > > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > > line 30, in main > > options, flags = gcore.parser() > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\etc\python\grass\script\core.py", line 680, in parser > > p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\Python27\lib\subprocess.py", line 703, in __init__ > > errread, errwrite) = self._get_handles(stdin, stdout, stderr) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\Python27\lib\subprocess.py", line 839, in _get_handles > > p2cread = self._make_inheritable(p2cread) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\Python27\lib\subprocess.py", line 878, in _make_inheritable > > _subprocess.DUPLICATE_SAME_ACCESS) > > WindowsError: [Error 6] The handle is invalid > > Traceback (most recent call last): > > File "C:\Program Files (x86)\GRASS GIS > > > 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", > > line 325, in RunScript > > exec codeObject in __main__.__dict__ > > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > > line 45, in <module> > > main() > > File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py", > > line 30, in main > > options, flags = gcore.parser() > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\etc\python\grass\script\core.py", line 680, in parser > > p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\Python27\lib\subprocess.py", line 703, in __init__ > > errread, errwrite) = self._get_handles(stdin, stdout, stderr) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\Python27\lib\subprocess.py", line 839, in _get_handles > > p2cread = self._make_inheritable(p2cread) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\Python27\lib\subprocess.py", line 878, in _make_inheritable > > _subprocess.DUPLICATE_SAME_ACCESS) > > WindowsError: [Error 6] The handle is invalid > > >>> > > > > > > This might be somehow related to bug in Python itself: > > http://bugs.python.org/issue3905 > > However, please focus on running the scripts for GRASS GIS from GRASS > session. The easiest way how to do that on MS Windows is to write the > script and then to start it from GUI (File > Run script) or from Python > shell tab in the GUI. > > It is possible to run scripts which are using GRASS modules from outside of > GRASS session but it requires you to set up the GRASS environment yourself. > This is possible but it has some challenges. On the other hand, if you > write your script in the way that it runs (only) in a GRASS session you can > use GRASS features for automatic building of interface and thus create a > true GRASS module. > > > > 2. If I go to the "Python shell" tab on the "Layer Manager" and do File > -> > > Launch Script and browse to .\scripts\d.what.rast.py, I get this output: > > > > (Sun Mar 01 12:32:31 2015) Command finished (0 > > sec) > > Launching script 'C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\ > > d.what.rast.py'... > > Traceback (most recent call last): > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\gui\wxpython\gui_core\forms.py", line 718, in OnRun > > > > gcmd.Command(cmd) > > File "C:\Program Files (x86)\GRASS GIS > > 7.0.0\gui\wxpython\core\gcmd.py", line 397, in __init__ > > > > _("Error: ") + self.__GetError())) > > core.gcmd > > . > > GException > > : > > Execution failed: 'd.what.rast map=elevation' > > Details: > > Error: > > > > The error message seems to be incomplete but in any case, please try with > r.out.xyz script and the example script from: > > http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html > > Vaclav > > > > Any ideas on what might be going on here? > > > > Rob Parsons > > Raleigh NC > > > > > > _______________________________________________ > > grass-user mailing list > > [email protected] > > http://lists.osgeo.org/mailman/listinfo/grass-user > > > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: < > http://lists.osgeo.org/pipermail/grass-user/attachments/20150301/6ff05a0b/attachment.html > > > > ------------------------------ > > _______________________________________________ > grass-user mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/grass-user > > End of grass-user Digest, Vol 107, Issue 2 > ****************************************** >
_______________________________________________ grass-user mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-user
