123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- """!@package grass.script.setup
- @brief GRASS Python scripting module (setup)
- Setup functions to be used in Python scripts.
- Usage:
- @code
- from grass.script import setup as grass
- grass.init()
- ...
- @endcode
- (C) 2010-2012 by the GRASS Development Team
- This program is free software under the GNU General Public
- License (>=v2). Read the file COPYING that comes with GRASS
- for details.
- @author Martin Landa <landa.martin gmail.com>
- """
- import os
- import sys
- import tempfile as tmpfile
- def write_gisrc(dbase, location, mapset):
- """Write the gisrc file and return the gisrc path."""
- fd, gisrc = tmpfile.mkstemp()
- os.write(fd, "GISDBASE: %s\n" % dbase)
- os.write(fd, "LOCATION_NAME: %s\n" % location)
- os.write(fd, "MAPSET: %s\n" % mapset)
- os.close(fd)
- return gisrc
- def init(gisbase, dbase='', location='demolocation', mapset='PERMANENT'):
- """!Initialize system variables to run scripts without starting
- GRASS explicitly.
- User is resposible to delete gisrc file.
- @param gisbase path to GRASS installation
- @param dbase path to GRASS database (default: '')
- @param location location name (default: 'demolocation')
- @param mapset mapset within given location (default: 'PERMANENT')
- @return path to gisrc file
- """
- # define PATH
- os.environ['PATH'] += os.pathsep + os.path.join(gisbase, 'bin')
- os.environ['PATH'] += os.pathsep + os.path.join(gisbase, 'scripts')
- if sys.platform.startswith('win'): # added for winGRASS
- os.environ['PATH'] += os.pathsep + os.path.join(gisbase, 'extrabin')
- # define LD_LIBRARY_PATH
- if '@LD_LIBRARY_PATH_VAR@' not in os.environ:
- os.environ['@LD_LIBRARY_PATH_VAR@'] = ''
- os.environ['@LD_LIBRARY_PATH_VAR@'] += os.pathsep + os.path.join(gisbase, 'lib')
-
- os.environ['GIS_LOCK'] = str(os.getpid())
- # Set PYTHONPATH to find GRASS Python modules
- path = os.getenv('PYTHONPATH')
- etcpy = os.path.join(gisbase, 'etc', 'python')
- if path:
- path = etcpy + os.pathsep + path
- else:
- path = etcpy
- os.environ['PYTHONPATH'] = path
- if not dbase:
- dbase = gisbase
- os.environ['GISRC'] = write_gisrc(dbase, location, mapset)
- return os.environ['GISRC']
|