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)
Кроме того, чтобы избавиться от ошибки, которую вы видите.