Hi, i am new to Pydev. I have Eclipse 3.4.1, Pydev 1.4.4.2636 and Python 2.5+
I have a very simple program which uses GRASS GIS as follows:
import grass
env=grass.gisenv
print env['GISRC']
The grass.gisenv code is executed (calls g.gisenv in GRASS which extracts the environment variables) but I cannot trace it to pinpoint the problem because source code does not show up.
The debugger does not show the source of grass.py when debugging through it, although it is listed among the external source libraries in the Project properties.
The print statement prints nothing even though GISRC is listed among the environment variables both in the Eclipse debug configuration and in the Window Preferences.
How can i make the source code of grass.py to show up when debugging it,?
PS g.gisenv runs OK when run in GRASS
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you Fabio and apologies for the delay in answering, I have been away for a while.
The good news is that the variable shows up, therefore the problem is not Pydev. I have since re-installed Eclipse, Python2.6 and Pydev and now all is well and debugging works as expected.
However I have also now tested WinXP and Ubuntu 9.04(with Grass (6.4.rc4), Eclipse (3.4.2) and Pydev 1.4.5., Python 2.6 with uneven results.
Using Eclipse to run or debug this short Python program:
env = grass.gisenv()
print env
res = grass.find_file(vectorname,type,mapset)
print res
rem = grass.read_command('g.remove', vect=vectorname)
print rem
behaves faultlessly under WinXP but when run under Ubuntu although it runs without errors, only the first two commands are actually executed and produce output, the g.remove appears to be executed (i.e. no error is given) but results in no removal and no output.
The same source program runs correctly when executed in Ubuntu as a normal python script from the Grass terminal (hence GRASS is not at fault).
Given that the first two commands only read data and the third has to write, could this be a permissions error, (although no error is given)?
Any help you can give would be greatly appreciated.
Many thanks
George
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok, it executes as a normal python script from the Grass terminal, but does it run from a shell properly (e.g.: if you start the command from /bin/sh python your_script.py, does it work... it could be that it only works from the grass terminal... or did I misunderstand something here?)
Cheers,
Fabio
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Sorry Fabio, simultaneously with your reply I completed a detailed comparison between the Win environment and the Ubuntu one, and found that one critical environment variable was not defined in my Ubuntu Eclipse run configuration. Once I defined it, all worked correctly.
My apologies again for the false alarm and thank you for your prompt reply.
All the best
George
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, i am new to Pydev. I have Eclipse 3.4.1, Pydev 1.4.4.2636 and Python 2.5+
I have a very simple program which uses GRASS GIS as follows:
import grass
env=grass.gisenv
print env['GISRC']
The grass.gisenv code is executed (calls g.gisenv in GRASS which extracts the environment variables) but I cannot trace it to pinpoint the problem because source code does not show up.
The debugger does not show the source of grass.py when debugging through it, although it is listed among the external source libraries in the Project properties.
The print statement prints nothing even though GISRC is listed among the environment variables both in the Eclipse debug configuration and in the Window Preferences.
How can i make the source code of grass.py to show up when debugging it,?
PS g.gisenv runs OK when run in GRASS
Sorry, forgot to mention I am using WinXP
Are you sure that's python code and not a c++ compiled function?
You can check if the environment variables are correct from:
import os
for key, value in os.environ.items(): print key, value
If it's not there, then it's a problem in Pydev...
Cheers,
Fabio
Thank you Fabio and apologies for the delay in answering, I have been away for a while.
The good news is that the variable shows up, therefore the problem is not Pydev. I have since re-installed Eclipse, Python2.6 and Pydev and now all is well and debugging works as expected.
However I have also now tested WinXP and Ubuntu 9.04(with Grass (6.4.rc4), Eclipse (3.4.2) and Pydev 1.4.5., Python 2.6 with uneven results.
Using Eclipse to run or debug this short Python program:
import os
import grass
vectorname="map2000vect"
type="vector"
mapset="PERMANENT"
env = grass.gisenv()
print env
res = grass.find_file(vectorname,type,mapset)
print res
rem = grass.read_command('g.remove', vect=vectorname)
print rem
behaves faultlessly under WinXP but when run under Ubuntu although it runs without errors, only the first two commands are actually executed and produce output, the g.remove appears to be executed (i.e. no error is given) but results in no removal and no output.
The same source program runs correctly when executed in Ubuntu as a normal python script from the Grass terminal (hence GRASS is not at fault).
Given that the first two commands only read data and the third has to write, could this be a permissions error, (although no error is given)?
Any help you can give would be greatly appreciated.
Many thanks
George
Ok, it executes as a normal python script from the Grass terminal, but does it run from a shell properly (e.g.: if you start the command from /bin/sh python your_script.py, does it work... it could be that it only works from the grass terminal... or did I misunderstand something here?)
Cheers,
Fabio
Sorry Fabio, simultaneously with your reply I completed a detailed comparison between the Win environment and the Ubuntu one, and found that one critical environment variable was not defined in my Ubuntu Eclipse run configuration. Once I defined it, all worked correctly.
My apologies again for the false alarm and thank you for your prompt reply.
All the best
George