我正在尝试在python 2.7上使用GRASS,但是我在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
我错过了什么?
答案 0 :(得分:3)
根据GRASS source,它正在尝试运行g.parser.exe
但无法找到它。您需要正确设置PATH环境变量才能解决此问题。
如果我没有弄错的话,您似乎正试图在bash或批处理脚本中设置大部分代码中的系统环境变量。您目前只设置和修改Python变量,很难。如果要实际设置环境变量以便其他子进程(例如GRASS)可以看到它们,则需要修改os.environ
变量,例如。
os.environ['PYTHONLIB'] = ...
而不是
PYTHONLIB = ...
回到PATH环境变量的问题,您已经使用sys.path.append(...)
更新了它,并在上面的PATH = ...
行中设置了正确的位置。由于上述原因,后者没有任何影响。您只需要在其上添加sys.path.append(PATH)
即可摆脱您所看到的错误。