Opened at 2011-02-03T21:52:59Z
Last modified at 2011-02-21T05:40:50Z
#1355 closed defect
py2.7 incompatibility in cross_check_pkg_resources_versus_import? — at Initial Version
Reported by: | warner | Owned by: | somebody |
---|---|---|---|
Priority: | critical | Milestone: | 1.9.0 |
Component: | code | Version: | 1.8.2 |
Keywords: | regression | Cc: | |
Launchpad Bug: |
Description
Jimmy Tang wrote to the mailing list with a crash on his Archlinux box. I suspect it's a python-2.7 incompatibility in the error-handling path in all the crazy what-version-of-each-dependency code inside __init__.py:
File "/home/jtang/tmp/tahoe-lafs/src/allmydata-tahoe-1.8.2/src/allmydata/__init__.py", line 301, in cross_check_pkg_resources_versus_import % (imp_ver, name, imp_loc, pr_ver, pr_loc, e.__class__.name, e)) AttributeError: type object 'exceptions.TypeError' has no attribute 'name' Aborting...
I suspect that TypeError moved from being implemented in Python (in py2.6) to being implemented in C (in py2.7), and that for some reason when you try to do the .name lookup, it explodes messily.
I don't know if this is a real error path, or if it's just accumulating a bunch of warnings to print to stderr (i.e. if we just took out the offending line, would the program work anyways, or is the missing/old/unable-to-compute-version dependency actually important?).
This sort of problem reinforces my feeling that our __init__.py is way too complex, and that all the version-checking logic may be doing more harm than good.
This may provoke a 1.8.3, if it happens frequently enough. If the bad e.__class__.name is only triggered under weird combinations of installed dependencies, then we might be able to put it off until 1.9.0 .