| Main |

When installing Twisted on OS X Server 10.5

When installing Twisted on OS X Server 10.5, take care!

Apple’s Wiki server is using Twisted Web2, which isn’t part of the Twisted distribution that you (or easy_install) will find on PyPi. If you just blindly install a newer Twisted, you’ll get this kind of thing in your server’s system.log:

com.apple.wikid[86011]: Traceback (most recent call last):
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/application/app.py", line 609, in run
com.apple.wikid[86011]:     config.parseOptions()
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/application/app.py", line 589, in parseOptions
com.apple.wikid[86011]:     usage.Options.parseOptions(self, options)
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/python/usage.py", line 226, in parseOptions
com.apple.wikid[86011]:     for (cmd, short, parser, doc) in self.subCommands:
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/application/app.py", line 599, in subCommands
com.apple.wikid[86011]:     for plug in plugins:
com.apple.wikid[86011]: ---  ---
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/plugin.py", line 204, in getPlugins
com.apple.wikid[86011]:     adapted = interface(plugin, None)
com.apple.wikid[86011]:   File "/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/zope/interface/interface.py", line 635, in _call_conform
com.apple.wikid[86011]:     return conform(self)
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/plugin.py", line 68, in __conform__
com.apple.wikid[86011]:     return self.load()
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/plugin.py", line 63, in load
com.apple.wikid[86011]:     return namedAny(self.dropin.moduleName + '.' + self.name)
com.apple.wikid[86011]:   File "/Library/Python/2.5/site-packages/Twisted-8.1.0-py2.5-macosx-10.5-ppc.egg/twisted/python/reflect.py", line 426, in namedAny
com.apple.wikid[86011]:     topLevelPackage = _importAndCheckStack(trialname)
com.apple.wikid[86011]:   File "/usr/share/wikid/lib/python/twisted/plugins/wikid.py", line 9, in 
com.apple.wikid[86011]:     from apple_utilities.tap import WikiServiceMaker
com.apple.wikid[86011]:   File "/usr/share/wikid/lib/python/apple_utilities/tap.py", line 24, in 
com.apple.wikid[86011]:     from twisted.web2.log import LogWrapperResource
com.apple.wikid[86011]: exceptions.ImportError: No module named web2.log

Worse, you can’t just check-out the Twisted trunk to get a copy containing the twisted.web2 module, because Apple’s wikid also depends on twisted.web2.dav, which was removed from the trunk in [22866]/[22867] (see #3072 for why this happened).

It turns out (see #3081) that there is a plan to re-introduce web2.dav to the Twisted trunk, the work for which is going on in svn://svn.twistedmatrix.com/svn/Twisted/branches/dav-take-two-3081-3 (Browse in Trac), so you can do e.g.

$ svn co svn://svn.twistedmatrix.com/svn/Twisted/branches/dav-take-two-3081-3 Twisted
$ cd Twisted
$ python setup.py bdist_egg
$ cd dist
$ sudo easy_install Twisted*.egg

or similar to install a version that is compatible with the Apple Wiki server.

I have reported this as rdar://6694255 in case anyone else wants to refer to the bug number in their own dealings with Apple.

Trackbacks

TrackBack URL for this entry:
http://alastairs-place.net/movabletype/mt-tb.cgi/259

Comments

Post a comment

If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thank-you for your patience.

(Your e-mail address will not be displayed or included in any pages served on this site; nor will you get any spam as a result.)

A live preview of your comment will be displayed below. It should refresh automatically when you stop typing, but if not then the “Preview” button above will update it.

Live Comment Preview