GRASS parser() ошибка

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

Вот мой сценарий:

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

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

1 ответ

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

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

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

вместо

PYTHONLIB = ...

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

Другие вопросы по тегам