sys.argv not found

Levente Sandor nospam at newsranger.com
Wed Jul 18 22:13:16 CEST 2001


It seems that one of the imported modules deletes sys.argv.
Suggestion: import sys at the top of your script, then make immediately the
variable assignements.

Levi

In article <3B55DBAB.EB900433 at mit.edu>, Man Vehicle Laboratory says...
>
>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