我正在尝试学习如何编写一些脚本,以便使用Python在外部运行Grass,但我似乎找不到为这种类型的脚本调用的基本模块。我看过的所有文档都描述了grass.scripts模块的使用,但我不知道从哪里下载。我也在grass.pygrass上看到了一些信息,但我也找不到这个。
我想它可能内置于较新版本的Grass中,所以我刚刚下载了7.0.0 beta2,但仍然可以找到grass.scripts文件。这是一个像其他模块一样的python模块(matploblib,numpy,scipy等)吗?或者它是Grass内部的?很抱歉提出了补救性的问题,但我在这里迷路了。
我运行了以下脚本(摘自http://grasswiki.osgeo.org/wiki/GRASS_and_Python,自运行Python2.7以来添加了引号)
GISBASE= 'C:\GRASS-64'
GISRC= 'C:\Documents and Settings\user\.grassrc6'
LD_LIBRARY_PATH= 'C:\GRASS-64\lib'
PATH= 'C:\GRASS-64\etc;C:\GRASS-64\etc\python;C:\GRASS-64\lib;C:\GRASS-64\bin;C:\GRASS-64\extralib;C:\GRASS-64\msys\bin;C:\Python26;'
PYTHONLIB= 'C:\Python26'
PYTHONPATH= 'C:\GRASS-64\etc\python'
GRASS_SH= 'C:\GRASS-64\msys\bin\sh.exe'它很好(虽然我不知道它是做什么的),但是当我添加
from grass.pygrass.modules import Module它返回
ImportError: No module named gras.pygrass.modules正常情况下,我会下载并安装模块,问题就会解决,但我在任何地方都找不到它。
发布于 2014-07-30 02:44:38
我运行了以下脚本(摘自http://grasswiki.osgeo.org/wiki/GRASS_and_Python,自运行Python2.7以来添加了引号)
GISBASE= 'C:\GRASS-64'
GISRC= 'C:\Documents and Settings\user\.grassrc6'
LD_LIBRARY_PATH= 'C:\GRASS-64\lib'
PATH= 'C:\GRASS-64\etc;C:\GRASS-64\etc\python;C:\GRASS-64\lib;C:\GRASS-64\bin;C:\GRASS-64\extralib;C:\GRASS-64\msys\bin;C:\Python26;'
PYTHONLIB= 'C:\Python26'
PYTHONPATH= 'C:\GRASS-64\etc\python'我不知道你为什么认为Python2.7需要你添加引号。事实并非如此。
但它确实需要您用Python27替换所有这些Python26。这很容易成为你的问题。你在C:\Python26什么都没有。
如果你在C:\GRASS-64之外的其他地方安装了Grass,你显然也需要改变它。(从文件的其他地方,我感觉64指的是6.4版,而不是64位或其他版本,而您已经下载了7.0.0,所以我怀疑它是安装在C:\GRASS-70之类的东西上。)
或者可以是这样的:
ImportError: No module named gras.pygrass.modules如果你导入的是gras.pygrass.modules而不是grass.pygrass.modules,那显然是行不通的。
另外,您是否真的在用于启动cmd.exe的同一个Python窗口中运行该脚本?如果没有,这将不会有任何帮助。
同时:
我看过的所有文档都描述了grass.scripts模块的使用,但我不知道从哪里下载它。
您链接到的文档回答了这个问题,尽管它对新手来说可能不明显(一旦您弄清楚了这一点,您可能想要建议上游的文档改进):
相关文件在$GISBASE/etc/python/grass/script/*.py上。
当然,在Windows上,$GISBASE不是字面上正确的;它实际上是%GISBASE%,有点像C:\GRASS-64,但它是同一件事。这些文件已经在您的系统中;没有什么可下载的。这就是将PYTHONPATH设置为C:\GRASS-64\etc\python的意义所在。
是不是像其他模块一样(matploblib,numpy,scipy等)或者它是Grass内部的?
好吧,它不完全是“Grass的内部”,但它是随Grass一起分发的,而不是作为一个单独的模块。
发布于 2014-07-31 01:03:35
我仍然不确定我理解了所有的东西,但我似乎已经跨过了这个障碍。我使用了(https://gis.stackexchange.com/questions/89452/problem-with-python-script-to-control-grass-gis-from-outside-how-to-import-gra/90160#90160)中的脚本,并更改了所有相关的路径信息以适合我的安装,显然,现在可以访问grass.script模块了。这是我的工作脚本
import os
import sys
gisbase = os.environ['GISBASE'] = 'C:\program files\grass gis 6.4.3' #GISBASE needs to point the root of the GRASS installation directory
gisrc = 'C:\grassdata'
gisdbase = 'C:\grassdata'
location = 'newLocation'
mapset = 'TC'
LD_LIBRARY_PATH = 'C:\program files\grass gis 6.4.3\lib'
PATH = 'C:\program files\grass gis 6.4.3\etc';'C:\program files\grass gis 6.4.3\etc\python';'C:\program files\grass gis 6.4.3\lib';'C:\program files\grass gis 6.4.3\bin';'C:\Python27';'C:\program files\grass gis 6.4.3\Python27';'C:\program files\grass gis 6.4.3\msys'
PYTHONLIB = 'C:\Python27'
PYTHONPATH = 'C:\program files\grass gis 6.4.3\etc\python'
GRASS_SH = 'C:\OSGeo4W64\apps\msys\bin\sh.exe'
sys.path.append(os.path.join(os.environ['GISBASE'], 'etc', 'python'))
import grass.script as grasshttps://stackoverflow.com/questions/25022617
复制相似问题