<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Mar 1, 2015 at 7:37 PM, Rob Parsons <span dir="ltr"><<a href="mailto:jrobparsons@gmail.com" target="_blank">jrobparsons@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello,<br><br>How do I run scripts located in C:\Program Files (x86)\GRASS GIS 7.0.0\scripts?<br><br>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).<br><br>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:<br><br><br>Sun Mar 01 12:32:30 2015)                                                      <br>g.region swwake_30m -p                                                          <br>projection: 99 (Lambert Conformal Conic)<br>zone:       0<br>datum:      nad83<br>ellipsoid:  a=6378137 es=0.006694380022900787<br>north:      228500<br>south:      215000<br>west:       630000<br>east:       645000<br>nsres:      30<br>ewres:      30<br>rows:       450<br>cols:       500<br>cells:      225000<br>(Sun Mar 01 12:32:31 2015) Command finished (0 sec)                             <br><br>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.<br><br>I have spent several days trying to understand how to create GRASS Python scripts and GRASS PyGRASS scripts from the online documentation(<a href="http://grasswiki.osgeo.org/wiki/GRASS_and_Python" target="_blank">http://grasswiki.osgeo.org/wiki/GRASS_and_Python</a>) 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.<br><br></div></blockquote><div>Please try the example from:<br><br><a href="http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html">http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html</a><br><br></div><div>I linked this page from documentation as well as the other Python wiki page from the GRASS and Python page:<br><br><a href="http://grasswiki.osgeo.org/wiki/GRASS_Python_Scripting_Library">http://grasswiki.osgeo.org/wiki/GRASS_Python_Scripting_Library</a><br><br></div><div>Note that GRASS scripts by default cannot run from outside GRASS GIS session (environment). This is probably not emphasized enough in the documentation.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">But, I should be able to run scripts located in C:\Program Files (x86)\GRASS GIS 7.0.0\scripts.<br><br>Correct?<br><br></div></blockquote><div>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).<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">1. If I open .\scripts\<a href="http://d.what.rast.py" target="_blank">d.what.rast.py</a> in the Pythonwin IDE and try to run it, I get this output:<br><br>OSError error(9): The handle is invalid<br>Traceback (most recent call last):<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript<br>    exec codeObject in __main__.__dict__<br>  File "C:\Users\Rob\Documents\grassscripts\pygrass\make_raster_using_mapcalc.py", line 8, in <module><br>    g.message("Filter elevation map by a threshold...")<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\etc\python\grass\pygrass\modules\shortcuts.py", line 46, in __getattr__<br>    return self.cls('%s.%s' % (self.prefix, name.replace('_', '.')))<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\etc\python\grass\pygrass\modules\interface\module.py", line 498, in __init__<br>    raise GrassError(str_err % <a href="http://self.name" target="_blank">self.name</a>)<br>GrassError: Error running: `g.message --interface-description`.<br>Traceback (most recent call last):<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript<br>    exec codeObject in __main__.__dict__<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\<a href="http://d.what.rast.py" target="_blank">d.what.rast.py</a>", line 45, in <module><br>    main()<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\<a href="http://d.what.rast.py" target="_blank">d.what.rast.py</a>", line 30, in main<br>    options, flags = gcore.parser()<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\etc\python\grass\script\core.py", line 680, in parser<br>    p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE)<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", line 703, in __init__<br>    errread, errwrite) = self._get_handles(stdin, stdout, stderr)<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", line 839, in _get_handles<br>    p2cread = self._make_inheritable(p2cread)<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", line 878, in _make_inheritable<br>    _subprocess.DUPLICATE_SAME_ACCESS)<br>WindowsError: [Error 6] The handle is invalid<br>Traceback (most recent call last):<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript<br>    exec codeObject in __main__.__dict__<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\<a href="http://d.what.rast.py" target="_blank">d.what.rast.py</a>", line 45, in <module><br>    main()<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\<a href="http://d.what.rast.py" target="_blank">d.what.rast.py</a>", line 30, in main<br>    options, flags = gcore.parser()<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\etc\python\grass\script\core.py", line 680, in parser<br>    p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE)<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", line 703, in __init__<br>    errread, errwrite) = self._get_handles(stdin, stdout, stderr)<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", line 839, in _get_handles<br>    p2cread = self._make_inheritable(p2cread)<br>  File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py", line 878, in _make_inheritable<br>    _subprocess.DUPLICATE_SAME_ACCESS)<br>WindowsError: [Error 6] The handle is invalid<br>>>> <br> <br></div></blockquote><div><br></div><div>This might be somehow related to bug in Python itself:<br><br><a href="http://bugs.python.org/issue3905">http://bugs.python.org/issue3905</a><br><br></div><div>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.<br><br></div><div>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.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">2. If I go to the "Python shell" tab on the "Layer Manager" and do File -> Launch Script and browse to .\scripts\<a href="http://d.what.rast.py" target="_blank">d.what.rast.py</a>, I get this output:<br><br>(Sun Mar 01 12:32:31 2015) Command finished (0 sec)                             <br>Launching script 'C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\<a href="http://d.what.rast.py" target="_blank">d.what.rast.py</a>'...<br>Traceback (most recent call last):<br>  File "C:\Program Files (x86)\GRASS GIS<br>7.0.0\gui\wxpython\gui_core\forms.py", line 718, in OnRun<br><br>gcmd.Command(cmd)<br>  File "C:\Program Files (x86)\GRASS GIS<br>7.0.0\gui\wxpython\core\gcmd.py", line 397, in __init__<br><br>_("Error: ") + self.__GetError()))<br>core.gcmd<br>.<br>GException<br>:<br>Execution failed: 'd.what.rast map=elevation'<br>Details:<br>Error:<br><br></div></blockquote><div>The error message seems to be incomplete but in any case, please try with r.out.xyz script and the example script from:<br><br><a href="http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html">http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html</a><br><br></div><div>Vaclav<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Any ideas on what might be going on here?<span class=""><font color="#888888"><br><br>Rob Parsons<br>Raleigh NC<br><br></font></span></div>
<br>_______________________________________________<br>
grass-user mailing list<br>
<a href="mailto:grass-user@lists.osgeo.org">grass-user@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/grass-user" target="_blank">http://lists.osgeo.org/mailman/listinfo/grass-user</a><br></blockquote></div><br></div></div>