Syntax error in ".py" file and globals variable values not available.

Timothy Grant timothy.grant at gmail.com
Thu Aug 28 22:23:35 CEST 2008


On Thu, Aug 28, 2008 at 1:40 AM, Alexis Boutillier
<alexis.boutillier at arteris.com> wrote:
> Timothy Grant a écrit :
>>
>> On Wed, Aug 27, 2008 at 2:49 AM, Alexis Boutillier
>> <alexis.boutillier at arteris.com> wrote:
>>>
>>> Hi,
>>>
>>> I have a strange behaviour of python with pdb and import statement.
>>> Here is the example code :
>>>
>>> file my1.py:
>>> import my2
>>>
>>> file my2.py:
>>> a=5
>>> toto
>>>
>>> I intentionnaly put a syntax error in file my2.py.
>>>
>>> If I run "python -i my2.py" and run pdb I got :
>>> NameError: name 'toto' is not defined
>>>>>>
>>>>>> import pdb
>>>>>> pdb.pm()
>>>
>>> -> toto
>>>>>>
>>>>>> print a
>>>
>>> 5
>>>
>>> If I run "python -i my1.py" and run pdb I got :
>>> NameError: name 'toto' is not defined
>>>>>>
>>>>>> import pdb
>>>>>> pdb.pm()
>>>
>>> -> toto
>>>>>>
>>>>>> print a
>>>
>>> None
>>>
>>> Why can't I get access to variable a in pdb when the process generating
>>> the
>>> error came from an import statement ?
>>>
>>> With python 2.3.5, it works fine and in the two cases I get the correct
>>> value of 5 for variable "a".
>>> with python 2.43,2.5.1,2.5.2, it doesn't work and I get "None" value for
>>> variable a.
>>>
>>> Somebody can explain me this behaviour ?
>>>
>>>
>>> Thanks.
>>> --
>>> Boutillier Alexis
>>> Methodology engineer
>>>
>>> Arteris SA
>>> The Network-on-Chip Company TM
>>> www.arteris.net
>>>
>>> 6 par Ariane Immeuble Mercure
>>> 78284 Guyancourt Cedex
>>> France
>>> Office: (+33) 1 61 37 38 71
>>> Fax:    (+33) 1 61 37 38 41
>>> Alexis.Boutillier at arteris.net
>>> --
>>> http://mail.python.org/mailman/listinfo/python-list
>>>
>>
>>
>> Because of the syntax error the module wasn't loaded.
>>
>> What kind of behaviour would you expect on code that has been flagged
>> as not executable?
>>
> I got the same behaviour with :
> file my2.py:
> a=5
> raise SystemError,""
>
> In pdb, I can't have the value of attribute a.
> So this is not linked to the fact that it is a SyntaxError or a SystemError.
>
> I expect to be able to have the value of all attributes that have been used
> before the error occured.
> This is problematic because in a more complicated code, you can't have the
> value of the attribute that was used before the error occured.
> Python know that this attribute exist, it only don't have its value. other
> attribute affected are : __name__,__doc__,__file__.
>
> --
> Boutillier Alexis
> Methodology engineer
>
> Arteris SA
> The Network-on-Chip Company TM
> www.arteris.net
>
> 6 par Ariane Immeuble Mercure
> 78284 Guyancourt Cedex
> France
> Office: (+33) 1 61 37 38 71
> Fax:    (+33) 1 61 37 38 41
> Alexis.Boutillier at arteris.net
> --
> http://mail.python.org/mailman/listinfo/python-list
>

So if you were writing C code and the file failed to compile you would
still expect to have a working executable that just worked up until
the point of the syntax error?

I'm not sure why you just don't fix the syntax error and move on.


-- 
Stand Fast,
tjg. [Timothy Grant]



More information about the Python-list mailing list