The cleanest approach by far that I have ever seen is to directly add variables (i.e. attributes) to your program (i.e. main module), as answered in another question on StackOverflow:
import sys
from string import ascii_uppercase
this_module = sys.modules[__name__]
for char in ascii_uppercase:
setattr(this_module, char, Variable(char))
print A # Works!
PS: Python core developers worked hard so as to make modifying globals() possible (see the comments to ncoghlan's answer). So, modifying globals() is an alternative. I'm not sure why many people feel that it is not so clean, though (maybe because the fact that globals() can be modified is not explicitly documented?).