From: Rob H. <he...@ta...> - 2007-11-16 18:46:36
|
On Nov 16, 2007, at 6:10 PM, Darren Dale wrote: > Hi Rob, > > On Friday 16 November 2007 11:14:50 am Rob Hetland wrote: >> Some recent changes (in the last few days) have caused my build to >> break. Three things: >> >> First of all, the line in setupext.py: if version.version.endswith >> ('mpl'): >> fails. I can comment this block out, and set the return of >> check_provide_traits(): to True, and things seem to work well. > > I'm surprised by that failure, but need some more information to > fix it. What > is the type and value of version.version on your machine? What > specifically > did you block out to make it work? > The exact error is: EXPERIMENTAL CONFIG PACKAGE DEPENDENCIES configobj: matplotlib will provide Traceback (most recent call last): File "setup.py", line 234, in <module> if check_provide_traits(): build_traits(ext_modules, packages) File "/Users/rob/src/python/matplotlib/matplotlib/setupext.py", line 468, in check_provide_traits if version.version.endswith('mpl'): AttributeError: 'module' object has no attribute 'version' The problem is that my enthough.traits.version has no version attribute: >>> from enthought.traits import version >>> version.version ------------------------------------------------------------------------ --- AttributeError Traceback (most recent call last) /Users/rob/<ipython console> in <module>() AttributeError: 'module' object has no attribute 'version' To make it work, I changed this: def check_provide_traits(): if options['provide_traits'] is True: print_status("enthought.traits", "matplotlib will provide") return True try: from enthought import traits try: from enthought.traits import version except: print_status("enthought.traits", "unknown and incompatible version: < 2.0") return False else: if version.version.endswith('mpl'): print_status("enthought.traits", "matplotlib will provide") return True else: print_status("enthought.traits", version.version) return False except ImportError: if options['provide_traits']: print_status("enthought.traits", "matplotlib will provide") return True else: print_status("enthought.traits", "no") return False To this: def check_provide_traits(): if options['provide_traits'] is True: print_status("enthought.traits", "matplotlib will provide") return True try: from enthought import traits try: from enthought.traits import version except: print_status("enthought.traits", "unknown and incompatible version: < 2.0") return False else: # if version.version.endswith('mpl'): # print_status("enthought.traits", "matplotlib will provide") # return True # else: # print_status("enthought.traits", version.version) # return False return True except ImportError: if options['provide_traits']: print_status("enthought.traits", "matplotlib will provide") return True else: print_status("enthought.traits", "no") return False I'm not sure if this is the _really_ right thing to do, but it does compile fine after this change, and I assume the answer (True) is the right one. -Rob ---- Rob Hetland, Associate Professor Dept. of Oceanography, Texas A&M University http://pong.tamu.edu/~rob phone: 979-458-0096, fax: 979-845-6331 |