1

我正在尝试在 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

我错过了什么?

4

1 回答 1

3

基于 GRASS,它正在尝试运行g.parser.exe但无法找到它。您需要正确设置 PATH 环境变量才能解决此问题。

如果我没记错的话,您似乎正在尝试在大量代码中设置系统环境变量,就像在 bash 或批处理脚本中那样。您目前只设置和修改 Python 变量,很难。如果您想实际设置环境变量,以便其他子进程(例如GRASS)可以看到它们,则需要修改该os.environ变量,例如

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

代替

PYTHONLIB = ...

回到 PATH 环境变量的问题,您已经在更新它并在上面的行sys.path.append(...)中设置了正确的位置。PATH = ...由于上述原因,后者只是没有任何效果。您只需要在sys.path.append(PATH)此基础上添加即可摆脱您看到的错误。

于 2016-02-05T14:50:44.470 回答