sys.argv not found

Man Vehicle Laboratory FenZhao at mit.edu
Wed Jul 18 20:55:39 CEST 2001


Fiddling with the script some more, it seems like Vrut somehow runs the script
again when vrut.go() is called.  I placed print statements all throughout the
code, which shows up in the interactive window  until vrut.go() is called.  Then
in the vrut window, it gives the Attribute Error.   I'm going to have to muck
through the vrut code itself to see what's going on.

            Thanks for everyone's help!
                Fen



Steve Holden wrote:

> "Man Vehicle Laboratory" <FenZhao at mit.edu> wrote in message
> news:3B55B2C2.74A8FB3D at mit.edu...
> >
> > I've tried putting a print statement right after I import sys.  I have the
> same
> > error as before:
> >
> >
> >
> ****************************************************************************
> **
> >
> >      * WINVRUT 2.4a  Copyright 1995-2001  University of California, Santa
> >      Barbara *
> >      *                                    Massachusetts Institute of
> >      Technology   *
> >
> ****************************************************************************
> **
> >
> >      VRUT  2.4a
> >      voicekey                        Voicekey 0.9
> >      serialthrustmaster              Serial thrustmaster 1.0
> >      avstu                           AvatarStudio 1.1
> >      Traceback (most recent call last):
> >        File "<string>", line 1, in ?
> >        File "N:\FenZhao\E3_sid_data\e3_sid_data2.py", line 61, in ?
> >          print sys.argv
> >      AttributeError: argv
> >
> Well, this traceback looks very suspicious. I assume that the file you are
> taking about is indeed e3_sid_data2.py?  Maybe not ... it is quite weird
> that sys appears to have no argv attribute. I can only conclude that perhaps
> some other portion of your code assigns to sys? But you say below this is
> NOT the case. Aaarrgghh...
>
> > The error I get from vrut is from my code looking at argv, not vrut (error
> > message w/out print statement:
> >
> > Traceback (most recent call last):
> >   File "<string>", line 1, in ?
> >   File "N:\FenZhao\E3_sid_data\e3_sid_data2.py", line 62, in ?
> >     mode=string.atoi(sys.argv[1])
> > AttributeError: argv
> >
> The first line of the tracebacks implies that some code is being executed
> from a strng variable. If none of your code does anything like that (uses
> eval/exec, let's say) then the obvious suspect is the vrut module...
>
> Your module doesn't by any chance import itself, does it?
>
> > So whatever my first operation is dealing with sys.argv, there's an
> attribute
> > error with argv)
> >
> > What confuses me is that this error is displayed in the VRUT window; VRUT
> opens
> > two windows, a display window that shows the 3D VR scene, and a text
> window that
> > will display print statements and error messages from python.  Logically,
> if
> > argv can't be found, an error message will end the program before vrut
> ever gets
> > started.
> >
> Oh. Is it possible that importing the vrut module modifies
> sys.stdout/sys.stderr, leaving something weird in place before the vrut.go()
> call creates the windows?
>
> > I've also tried importing vrut after looking at sys.argv in case vrut does
> > something funky in it's initialization/import.  Same problem.  Yet
> commenting
> > out the vrut.go() command, and the sys.argv is fine.
>
> OK, so what you are telling us is that the presence of a function call you
> have not yet executed is somehow affecting the sys module's namespace. That
> sounds pretty funky to me, and frankly I'm beginning to wonder whether you
> have programmed a time machine :-)
>
> >
> >                                         --Fen
> >
> > PS. I hope this helps:  all of my code up to the call to vrut (minus
> > comments)...  there's not much there, can't figure out what's making it
> work
> > improperly.  None of the modules that I wrote and imported do anything
> with sys
> >
> I can understand your confusion. I hope the rest of the list will feel free
> to dive in with suggestions about what's wrong! :-0
> >
>
> Put "import sys; print sys.argv" here to make sure your program does indeed
> see the correct value for the argument list.
>
> >      import vrut
>
> Put "import sys; print sys.argv" here too, to verify that the import
> statement makes no changes to sys.
> If you see output from the first print bu not the second then the module is
> indeed doing something funky.
>
> >      import sid
> >
> >
> >      import string
> >      import math
> >      import time
> >
> >
> >      import speeds
> >      import e3_dataAn
> >      import sys
> >
> >      mode=string.atoi(sys.argv[1])
> >      ARGFILE_stim=sys.argv[2]
> >      ARGFILE_calib=sys.argv[3]
> >      OUTFILE=sys.argv[4]
> >      SUMFILE=sys.argv[5]
> >      sidOutfile=sys.argv[6]
> >      VECTION_DURATION=string.atoi(sys.argv[7])
> >      path=sys.argv[8]
> >
> >      vrut.go(vrut.NICE)
> >
> >
> >
> > Steve Holden wrote:
> > [ various apparently irrelevant things ]
>
> I'm currently betting that a recursive import is somehow messing things up.
> Otherwise I'm a little stumped, and we'll have to proceed with debugging
> step by step.
>
> regards
>  Steve
> --
> http://www.holdenweb.com/




More information about the Python-list mailing list