[GRASS-user] need to run python-grass script outside grass in Unix environment

alassane toure atourej at gmail.com
Mon May 30 15:45:40 PDT 2016


Group,
I need help to run a python-grass script outside grass.  I executed the
following suggested program with the errors

line 1: import: command not found
/home/alassane/Programs/pythonGrass-example.py: line 2: import: command not
found
/home/alassane/Programs/pythonGrass-example.py: line 3: import: command not
found
/home/alassane/Programs/pythonGrass-example.py: line 6: syntax error near
unexpected token `('
/home/alassane/Programs/pythonGrass-example.py: line 6: `gisdb =
os.path.join(os.path.expanduser("~"), "/home/alassane/'ata")


Here is the code I copied in a file and named it grasspython.py

*************************************************************
import os
import sys
import subprocess
# define GRASS Database
# add your path to grassdata (GRASS GIS database) directory
gisdb = os.path.join(os.path.expanduser("~"), "/home/alassane/Data")
# the following path is the default path on MS Windows
# gisdb = os.path.join(os.path.expanduser("~"), "Documents/grassdata")

# specify (existing) Location and Mapset
location = "SanbornCD"
mapset = "PERMANENT"

# path to the GRASS GIS launch script
# we assume that the GRASS GIS start script is available and on PATH
# query GRASS itself for its GISBASE
# (with fixes for specific platforms)
# needs to be edited by the user
grass7bin = '/usr/bin/grass70'
if sys.platform.startswith('win'):
    # MS Windows
    grass7bin = r'C:\OSGeo4Win\grass70.bat'
    # uncomment when using standalone WinGRASS installer
    # grass7bin = r'C:\Program Files (x86)\GRASS GIS 7.0.0\grass70.bat'
    # this can be avoided if GRASS executable is added to PATH
elif sys.platform == 'darwin':
    # Mac OS X
    # TODO: this have to be checked, maybe unix way is good enough
    grass7bin = '/Applications/GRASS/GRASS-7.0.app/'

# 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)

# set GISBASE environment variable
os.environ['GISBASE'] = /usr/local/grass-7.0.1svn

# define GRASS-Python environment
grass_pydir = os.path.join(gisbase, "etc", "python")
sys.path.append(grass_pydir)

# import (some) GRASS Python bindings
import grass.script as gscript

# launch session
rcfile = gscript.setup.init(gisbase, gisdb, location, mapset)

# example calls
gscript.message('Current GRASS GIS 7 environment:')
print gscript.gisenv()

gscript.message('Available raster maps:')
for rast in gscript.list_strings(type='raster'):
    print rast

gscript.message('Available vector maps:')
for vect in gscript.list_strings(type='vector'):
    print vect

# delete the rcfile
os.remove(rcfile)

*****************************************************************************

Obviously i am new with this and your help is appreciated.

Thanks

Alassane
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20160530/4c39e605/attachment.html>


More information about the grass-user mailing list