UnboundLocalError: local variable referenced before assignment

2010-06-08 Thread ch1zra
I have following code :

import os, time, re, pyodbc, Image, sys
from datetime import datetime, date, time
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import mkTable

mkTable.mkTable()

and then file mkTable.py located in same directory has :

def mkTable():
global canvas
canvas = canvas.Canvas(fname, pagesize=A4)
... and so on



this gives me following traceback:


Traceback (most recent call last):
  File "C:\py\pdf_test.py", line 36, in 
mkTable.mkTable()
  File "C:\py\mkTable.py", line 38, in mkTable
canvas = canvas.Canvas("K_lista.pdf", pagesize=A4)
UnboundLocalError: local variable 'canvas' referenced before
assignment

i haven't posted entire code, because those lines are giving me
problems. I've searched the web, and all say that I should make var
global inside function. so I did it, but still nothing...
using python 2.6.2 and reportlab 2.4
help plz :)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: UnboundLocalError: local variable referenced before assignment

2010-06-08 Thread ch1zra
On Jun 8, 10:29 am, Richard Thomas  wrote:
> On Jun 8, 9:03 am, ch1zra  wrote:
>
>
>
>
>
> > I have following code :
>
> > import os, time, re, pyodbc, Image, sys
> > from datetime import datetime, date, time
> > from reportlab.lib.pagesizes import A4
> > from reportlab.lib.units import cm
> > from reportlab.pdfgen import canvas
> > from reportlab.pdfbase import pdfmetrics
> > from reportlab.pdfbase.ttfonts import TTFont
> > import mkTable
>
> > mkTable.mkTable()
>
> > and then file mkTable.py located in same directory has :
>
> > def mkTable():
> >     global canvas
> >     canvas = canvas.Canvas(fname, pagesize=A4)
> >     ... and so on
>
> > this gives me following traceback:
>
> > Traceback (most recent call last):
> >   File "C:\py\pdf_test.py", line 36, in 
> >     mkTable.mkTable()
> >   File "C:\py\mkTable.py", line 38, in mkTable
> >     canvas = canvas.Canvas("K_lista.pdf", pagesize=A4)
> > UnboundLocalError: local variable 'canvas' referenced before
> > assignment
>
> > i haven't posted entire code, because those lines are giving me
> > problems. I've searched the web, and all say that I should make var
> > global inside function. so I did it, but still nothing...
> > using python 2.6.2 and reportlab 2.4
> > help plz :)
>
> The version of mkTable.py you posted is clearly different to the one
> in the traceback. You might want to check that.
>
> Richard.

here's full version of mkTable.py (I've cut out all the drawing code
for clarity)
http://bpaste.net/show/7003/

and it's caller :
http://bpaste.net/show/7004/

and the newest traceback (just generated):

Traceback (most recent call last):
  File "C:\py\pdf_test.py", line 36, in 
mkTable.mkTable()
  File "C:\py\mkTable.py", line 38, in mkTable
canvas.setFillColorRGB(0.8,0.8,0.8)
UnboundLocalError: local variable 'canvas' referenced before assignment
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: UnboundLocalError: local variable referenced before assignment

2010-06-08 Thread ch1zra
On Jun 8, 10:59 am, Bryan  wrote:
> ch1zra wrote:
> > I have following code :
>
> > import os, time, re, pyodbc, Image, sys
> > from datetime import datetime, date, time
> > from reportlab.lib.pagesizes import A4
> > from reportlab.lib.units import cm
> > from reportlab.pdfgen import canvas
> > from reportlab.pdfbase import pdfmetrics
> > from reportlab.pdfbase.ttfonts import TTFont
> > import mkTable
>
> > mkTable.mkTable()
>
> > and then file mkTable.py located in same directory has :
>
> > def mkTable():
> >     global canvas
> >     canvas = canvas.Canvas(fname, pagesize=A4)
> >     ... and so on
>
> > this gives me following traceback:
>
> > Traceback (most recent call last):
> >   File "C:\py\pdf_test.py", line 36, in 
> >     mkTable.mkTable()
> >   File "C:\py\mkTable.py", line 38, in mkTable
> >     canvas = canvas.Canvas("K_lista.pdf", pagesize=A4)
> > UnboundLocalError: local variable 'canvas' referenced before
> > assignment
>
> Python doesn't have one global namespace. Each module (file) has its
> own namespace, which is a Python dict, and 'global' means defined in
> the containing module's dict. Put the import:
>
>   from reportlab.pdfgen import canvas
>
> in the mkTable.py file. That brings 'canvas' into the mkTable module's
> namespace.
>
> Python programs commonly import the same module multiple times. Only
> the first import runs the body of the imported module. Subsequent
> imports merely bring the names into the importing module's namespace.
>
> --
> --Bryan Olson

thanx so much, it worked.
I am getting some other problems now, but will use this logic to fix
it.
thanx once again :)
-- 
http://mail.python.org/mailman/listinfo/python-list