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

Timothy Grant timothy.grant at gmail.com
Fri Aug 29 22:22:34 CEST 2008


On Fri, Aug 29, 2008 at 12:48 AM, Alexis Boutillier
<alexis.boutillier at arteris.com> wrote:
> Timothy Grant a écrit :
>>
>> 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.
>>
>>
>
> As you can see in my last response, this problem is not linked to the type
> of error, If I "raise" a SystemError instead of creating a SyntaxError I
> still can't access variable defined before the error.
>
>
> --
> 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
>

http://docs.python.org/ref/import.html

-- 
Stand Fast,
tjg. [Timothy Grant]



More information about the Python-list mailing list