2016-02-05 5 views
1

Я пытаюсь использовать GRASS на Python 2.7, но у меня возникают некоторые проблемы при настройке моего сценария на холостом ходу, то я получаю сообщение об ошибке при parser() функции:GRASS анализатор ошибок()

Здесь мой сценарий:

import os 
import sys 

gisbase = os.environ['GISBASE'] = 'C:\Program Files (x86)\GRASS GIS 7.0.1RC1' 
gisrc = 'C:\grassdata' 
gisdbase = 'C:\grassdata' 
location = 'newLocation' 
mapset = 'TC' 
LD_LIBRARY_PATH = 'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\lib' 
PATH = 'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\etc';'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\etc\python';'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\lib';'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\bin';'C:\Python27';'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\Python27';'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\msys' 
PYTHONLIB = 'C:\Python27' 
PYTHONPATH = 'C:\Program Files (x86)\GRASS GIS 7.0.1RC1\etc\python' 


sys.path.append(os.path.join(os.environ['GISBASE'], 'etc', 'python')) 

import grass.script as grass 

grass.parser() #I'M STUCKING HERE 

Я получаю сообщение об ошибке внутри subprocess.py:

p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE)

полная ошибка:

Traceback (most recent call last): 
    File "C:\Users\Ciro\Desktop\teste_grass.py", line 19, in <module> 
    grass.parser() 
    File "C:\Program Files (x86)\GRASS GIS 7.0.1RC1\etc\python\grass\script\core.py", line 680, in parser 
    p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE) 
    File "C:\Python27\ArcGIS10.1\lib\subprocess.py", line 679, in __init__ 
    errread, errwrite) 
    File "C:\Python27\ArcGIS10.1\lib\subprocess.py", line 893, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 

Что мне не хватает?

+0

Перекрестная ссылка на GIS SE http://gis.stackexchange.com/questions/179590/grass-parser-error/179789 (пожалуйста, всегда указывайте, что вопрос был перекрестно размещен). – wenzeslaus

ответ

3

На основании GRASS source, он пытается запустить g.parser.exe, но не может его найти. Вы должны правильно установить переменную среды PATH, чтобы исправить это.

Возможно, вы пытаетесь установить переменные системной среды в основной части вашего кода, как это можно сделать в сценариях bash или batch, если я не ошибаюсь. В настоящее время вы устанавливаете и изменяете переменные Python, жесткие. Если вы хотите фактически установить переменные среды, чтобы другие подпроцессы (например, GRASS) могли их видеть, вам необходимо изменить переменную os.environ, например.

os.environ['PYTHONLIB'] = ... 

вместо

PYTHONLIB = ... 

Возвращаясь к задаче с переменной PATH среды, вы уже его обновления с sys.path.append(...), а также установление правильных местах в PATH = ... строке выше. Последнее просто не имеет никакого эффекта по причине, упомянутой выше. Вам нужно добавить только sys.path.append(PATH), чтобы избавиться от ошибки, которую вы видите.

Смежные вопросы