On Jul 28, 2008, at 5:44 AM, Glynn Clements wrote:
Michael Barton wrote:
Is there any pattern to which modules will import and which won't?
All the paths in sys.path are valid.
That isn't what I asked.
Which modules will import, and which won't? Presumably "sys" imports
(that's built into Python)? What about "os"?
Is it just the modules in site-packages, or the "system" modules as
well?
System modules import fine. It's just site-packages modules
AFAICT, everything works without $PYTHONPATH in all cases EXCEPT in
a script running under the GRASS parser.
So what changes before and after g.parser?
In the scripts which I have seen so far, the imports are at the top
level, so they will be executed on both occasions. I can't think of
any reason why an import would fail when the script is run initially
but then work when the script is re-invoked from g.parser.
Can you add commands to print sys.argv and sys.path (and, if you can
import "os", os.environ) to the top of the script, and see what is
changing before and after g.parser.
I'm not sure I understand. The structure is a 'standard GRASS script'
for Python.
##################################
#!/usr/bin/python
GRASS doc area
GUI description area
most import statements (this is where it stops with an import from
site-packages; the 'system' modules import fine)
def Main(): (i.e., the first procedure called by the parser line)
other procedures
if __name__ == "__main__":
options, flags = grass.parser()
main()
##################################
This works fine if I type the following on at the GRASS command prompt
before executing
PYTHONPATH="/Library/Frameworks/Python.framework/Versions/2.5/lib/
python2.5/site-packages"$PYTHONPATH
I thought I'd show you how setting PYTHONPATH in Init.sh was causing
the trouble, but discovered something that seems a bit odd. I tried
unsetting PYTHONPATH and got the same results as before.
GRASS 7.0.svn (Spearfish60_test):~ > $PYTHONPATH
bash: /Applications/Grass/GRASS-7.0.app/Contents/MacOS/etc/python:: No
such file or directory
GRASS 7.0.svn (Spearfish60_test):~ > export PYTHONPATH=""
GRASS 7.0.svn (Spearfish60_test):~ > $PYTHONPATH
GRASS 7.0.svn (Spearfish60_test):~ >
GRASS 7.0.svn (Spearfish60_test):~ > histogram_mpldemo.py
Traceback (most recent call last):
File "/Applications/Grass/GRASS-7.0.app/Contents/MacOS/scripts/
histogram_mpldemo.py", line 93, in <module>
import matplotlib
ImportError: No module named matplotlib
If I start Python from the GRASS command prompt, sys.path is as before
and $PYTHONPATH is unset. So what is setting the search path for
Python modules now?
Michael
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev