From: David H. <dav...@gm...> - 2007-08-13 19:21:41
|
On 8/11/07, Charlie Groves <cha...@gm...> wrote: > From svn blame, it looks like that was commented out 6 years ago. The > commit message that went along the change didn't shed much light as to > why it was disabled, but imp.loadFromClassLoader doesn't even exist > any more, so it's probably not a good path going forward. > > A bug was just opened for loading souce and compiled python files > through the classloader: http://jython.org/1747126 We discussed it a > bit on jython-dev as well. The discussion is linked form the bug. Thanks for the link. From a deployment standpoint this is a crucial feature. The issues raised in the linked discussion seem to pose only documentation problems. Python and Java code in parallel module/package structures is a user bug, right? (Rather unfortunate for coders on Reunion Island.) > Essentially, I think you'd want to add some code to > org.python.core.JavaImporter to handle Python source and compiled > files. Here's the algorithm I proposed for loading in the earlier > discussion: > > if the classloader can find com.blah.Whatever: > use the java class com.blah.Whatever > elif the classloader can find com.blah.Whatever.__init__ compiled > or as source: > use the python package com.blah.Whatever > elif the classloader can find com.blah.Whatever compiled or as source: > use the python module com.blah.Whatever > else > ImportError > > Right now, JavaImporter handles the first case. You'd need to add the > two elifs. That looks like a decent solution, and it has the merit that you've showed me exactly where to start ;-) It doesn't give users much control, but more flexible alternatives can be investigated later if necessary. -David |