Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I wish to use a Grass module ( in QGis, without the grass toolbox.

I tried with the Python console, but to no avail :

  • Using Sextante plugin but obviously it didn't know all the grass modules.

from sextante.core.Sextante import Sextante


--> Algorithm not found

  • An other test :

grass.run_command("", map='bl@PERMANENT', layer='2', option='start', units='meters', columns='X,Y,Z')

-->Traceback (most recent call last):

File "", line 1, in module

NameError: name 'grass' is not defined

Do you know if there is an other way to use the grass module ? I don't want to use it in the grass toolbox because I can select only one colums in "attribute field", and I would like to choose several columns.

share|improve this question… shows how to import grass – underdark Nov 8 '12 at 16:39

To use grass functions from a plugin or from the console, you must first import the grass module like this:

import grass.script as grass

Forgetting the import will cause the NameError for grass.

Follow detailed instructions on using grass from within python

If you are running on windows and you get a Bad Handle error when you try to import grass, this is a result of an unresolved python bug that occurs on some window systems. To work around the problem, put the code that imports and calls grass in a separate script. Then, run this script as an independent process from within your plugin.

if __name__ == '__main__':

import grass.script as grass
grass.run_command("", map='bl@PERMANENT', layer='2', option='start', units='meters', columns='X,Y,Z')

print "Grass OUtput"

From Console/Plugin:

import subprocess

p1=subprocess.Popen(['', 'arg1', ...], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
ret= p1.communicate()[1] # grab grass output  
print ret 

Good Luck!

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.