
On Sat, 30 Jun 2007 20:27:19 -0400, Phil Christensen <phil@bubblehouse.org> wrote:
Hello all,
I'm trying to implement a plugin system in a project using the twisted plugin framework. I've read through the docs pretty thoroughly, but I can't seem to figure out what I'm doing wrong.
Attached is a sample case that should illustrate the problem. The layout is as follows:
plugin_dir/ plugin_dir/test/ plugin_dir/test/plugins/ plugin_dir/test/plugins/myplugin.py test/ test/__init__.py test/plugins/ test/plugins/__init__.py test/sample.py test_plugin.py
First I created the test.plugins package, and included the following in test/plugins/__init__.py:
import os, sys
__path__ = [os.path.abspath(os.path.join(x, 'test', 'plugins')) for x in sys.path]
__all__ = []
Then I created my interfaces in the test.sample module:
from zope import interface
class ISamplePlugin(interface.Interface): '''My Sample Plugin Class'''
Next, I created the plugin in an arbitrary directory, under plugin_dir/test/plugins/myplugin.py:
from zope.interface import implements from twisted import plugin from test.sample import ISamplePlugin
class MyPlugin(object): implements(plugin.IPlugin, ISamplePlugin)
The problem may be here. What happens if you use classProvides instead of implements or bind an instance of MyPlugin to an attribute of this module?
Finally, here's the sample script that tries to load the plugins in the arbitrary directory:
from twisted import plugin
import sys sys.path.append('.') sys.path.append('./plugin_dir')
from test import sample, plugins from twisted import plugin plugin_result = plugin.getPlugins(sample.ISamplePlugin, plugins)
for plugin in plugin_result: print repr(plugin) + ' was found.'
Which gives no output.
Here are the things I've checked for:
* './plugin_dir' is definitely on the pythonpath when getPlugins is called. I've also tried using an absolute path.
* once the path is modified, I can import manually with: import test.plugins.myplugins
I'm using the latest Twisted-SVN, under the pythonmac.org Python 2.4.4 distribution on Mac OS X 10.4.10.
Any help would be greatly appreciated.
Thanks in advance,
Jean-Paul