Hi Vaclav,
Thanks for your suggestions
I already tried obtaining the gisbase from the binary but got the same error,
so i then switch to the shorthand way (besides, instaling grass through the
Osgeo4w doesn't create a grass70.bat in the
C:\OSGeo4W\apps\grass\grass-7.0.4 folder, the bat seems to be only created
using the standalone grass installers).
Using this way I'm getting the same stacktrace.
script.run_command('g.list', flags='m', type='raster')
Running the os.environ shows me several variables, the more relevants I suppose
are
'PYTHONPATH': 'C:\\OSGeo4W\\apps\\grass\\grass-7.0.4\\etc\\python'
'GISBASE': 'C:\\OSGeo4W\\apps\\grass\\grass-7.0.4'
'GISRC': 'c:\\users\\Carl\\appdata\\local\\temp\\tmprv4iwf'
'GIS_LOCK': '5156'
'GRASS_PYTHON': 'python.exe'
'GRASS_ADDON_BASE': 'C:\\Users\\Carl\\AppData\\Roaming\\GRASS7\\addons'
'PATH':
''C:\\Windows\\SYSTEM32;C:\\Windows;C:\\Windows\\SYSTEM32\\WBEM;C:\\Program
Files
(x86)\\GDAL;C:\\Python27;C:\\Python27;C:\\Python27\\Scripts;C:\\OSGeo4W\\apps\\grass\\grass-7.0.4\\bin;C:\\OSGeo4W\\apps\\grass\\grass-7.0.4\\scripts;C:\\OSGeo4W\\apps\\grass\\grass-7.0.4\\extrabin;C:\\OSGeo4W\\apps\\grass\\grass-7.0.4\\lib',
'GDAL_DRIVER_PATH': 'C:\\Program Files (x86)\\GDAL\\gdalplugins'
'GDAL_DATA': 'C:\\Program Files (x86)\\GDAL\\gdal-data'
'SAGA_MLB': 'C:\\Saga\\modules'
'GISBASE': 'C:\\OSGeo4W\\apps\\grass\\grass-7.0.4'
'GDAL_HOME': 'C:\\Program Files (x86)\\GDAL'
'PYTHON_HOME': 'C:\\Python27'
'SAGA_HOME': 'C:\\Saga'
I forgot to mention in the first mail that before getting the stack trace a
popup appear saying this
===
Microsoft Visual C++ Runtime Library
Program
C:\OSGeo4W\apps\grass\grass-7.0.4\bin\g.gisenv.EXE
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.
===
And then another popup with a g.gisenv.exe application error printing the error
0x0000142.
What i discover is that if I remove gdal from PATH environment, the error
change to "iconv.dll missing" but with a similar stacktrace
===
grass.exceptions.CalledModuleError: Module run None ['g.gisenv', '-n'] ended
with error
Process ended with non-zero return code -1073741515. See errors in the (error)
output.
===
Maybe has something to do that my OS is Win 7 x64 ? I choose the x32 as my
system wide python is x32.
Thanks!
________________________________
De: Vaclav Petras <[email protected]>
Enviado: jueves, 04 de agosto de 2016 09:37 p.m.
Para: Jose M
Cc: [email protected]
Asunto: Re: [GRASS-user] Error trying to run grass from python script/command
line in Windows
Hi,
On Thu, Aug 4, 2016 at 7:50 PM, Jose M
<[email protected]<mailto:[email protected]>> wrote:
gisbase = r'C:\OSGeo4W\apps\grass\grass-7.0.4'
os.environ['GISBASE'] = gisbase
likely unrelated but I suggest to use the way specified in the manual, i.e.
obtaining the GISBASE value from the binary:
# query GRASS GIS itself for its GISBASE
startcmd = [grass7bin, '--config', 'path']
try:
p = subprocess.Popen(startcmd, shell=False,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
except OSError as error:
sys.exit("ERROR: Cannot find GRASS GIS start script"
" {cmd}: {error}".format(cmd=startcmd[0], error=error))
if p.returncode != 0:
sys.exit("ERROR: Issues running GRASS GIS start script"
" {cmd}: {error}"
.format(cmd=' '.join(startcmd), error=err))
gisbase = out.strip(os.linesep)
https://grass.osgeo.org/grass72/manuals/libpython/script.html#module-script.setup
gscript.run_command('g.list -m type=raster')
Unrelated, but this is not guaranteed to work. Use the syntax:
gscript.run_command('g.list', flags='m', type='raster')
And this is the stacktrace I'm getting
C:\test>setupgrass.py
Traceback (most recent call last):
File "C:\test\setupgrass.py", line 20, in <module>
gscript.run_command('g.list -m type=raster')
File "C:\OSGeo4W\apps\grass\grass-7.0.4\etc\python\grass\script\core.py",
line 393, in run_command
ps = start_command(*args, **kwargs)
File "C:\OSGeo4W\apps\grass\grass-7.0.4\etc\python\grass\script\core.py",
line 356, in start_command
if debug_level() > 0:
File "C:\OSGeo4W\apps\grass\grass-7.0.4\etc\python\grass\script\core.py",
line 1519, in debug_level
_debug_level = int(gisenv().get('DEBUG', 0))
File "C:\OSGeo4W\apps\grass\grass-7.0.4\etc\python\grass\script\core.py",
line 935, in gisenv
s = read_command("g.gisenv", flags='n')
File "C:\OSGeo4W\apps\grass\grass-7.0.4\etc\python\grass\script\core.py",
line 446, in read_command
return handle_errors(returncode, stdout, args, kwargs)
File "C:\OSGeo4W\apps\grass\grass-7.0.4\etc\python\grass\script\core.py",
line 313, in handle_errors
returncode=returncode)
grass.exceptions.CalledModuleError: Module run None ['g.gisenv', '-n'] ended
with error
Process ended with non-zero return code -1073741502. See errors in the (error)
output.
According to my Internet search, -1073741502 means STATUS_DLL_INIT_FAILED - DLL
Initialization Failed. So perhaps the installation is somehow broken or the
paths are not set right. You can try
print os.environ
after init() call to see how the paths are set.
Vaclav
_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user