Importing from __future__ doesn't work under PDB

2016-05-11 Thread martin846
Hi folks, 

I've been trying to use pdb to debug a Python 2.7 program and this has really 
stumped me.

When debugging a program that uses 

from __future__ import division 

in Python 2.7, it would be useful to be able to have the same behaviour at the 
pdb prompt. However, it looks like pdb doesn't honour either the import 
statement in the original program, or one run explicitly at the pdb prompt. 

Given the program test.py:

from __future__ import division
print(2/3)

I get the following interactive pdb session:

martin@martin-H97-D3H:~$ python -m pdb test.py
> /home/martin/test.py(1)()
-> from __future__ import division
(Pdb) n
> /home/martin/test.py(2)()
-> print(2/3)
(Pdb) n
0.6667
--Return--
> /home/martin/test.py(2)()->None
-> print(2/3)
(Pdb) 2/3
0
(Pdb) from __future__ import division
(Pdb) 2/3
0
(Pdb) 

In other words, I get different results for the same expression (2/3) in the 
program and on the pdb prompt, which makes debugging tricky. I cannot figure 
out how to persuade pdb to actually load the division module. Is there an 
approved way? Normal modules load as expected in pdb:

(Pdb) import os
(Pdb) os.getcwd()
'/home/martin'

so this is obviously some special magic that applies only to the __future__ 
module. Any ideas?


-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Importing from __future__ doesn't work under PDB

2016-05-11 Thread martin846
Many thanks for the quick reply. I must admit I was surprised not to find any 
note about this anywhere in the docs (or indeed anywhere online); it seems like 
something that people would have run into before. I've added a request to the 
documentation tracker to have a note added to help people who end up in the 
same position.
-- 
https://mail.python.org/mailman/listinfo/python-list