Ticket #7172 (closed defect: worksforme)
Opened 4 years ago
Last modified 2 years ago
Cannot find an implementation of the "ICaptchaMethod" interface named "ImageCaptcha".
| Reported by: | shendric | Owned by: | mgood |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | plugin/spamfilter | Version: | devel |
| Severity: | normal | Keywords: | |
| Cc: | shendric@… | ||
| Release Notes: | |||
| API Changes: | |||
Description
How to Reproduce
While doing a GET operation on /captcha, Trac issued an internal error.
Imaging-1.1.6 from PIL was installed using sudo python setup.py install
User Agent was: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
System Information
| Trac | 0.11dev-r6886 |
| Python | 2.4.3 (#2, Oct 6 2006, 08:04:11) [GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] |
| setuptools | 0.6c8 |
| SQLite | 3.2.8 |
| pysqlite | 2.0.5 |
| Genshi | 0.4.4 |
| mod_python | < 3.2 |
| Subversion | 1.3.1 (r19032) |
| jQuery: | 1.2.3 |
Python Traceback
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/Trac-0.11dev_r6886-py2.4.egg/trac/web/main.py", line 417, in _dispatch_request
dispatcher.dispatch(req)
File "/usr/lib/python2.4/site-packages/Trac-0.11dev_r6886-py2.4.egg/trac/web/main.py", line 197, in dispatch
resp = chosen_handler.process_request(req)
File "/usr/lib/python2.4/site-packages/TracSpamFilter-0.2.1cdev_r6883-py2.4.egg/tracspamfilter/captcha/api.py", line 90, in process_request
result, html = self.captcha.generate_captcha(req)
File "/usr/lib/python2.4/site-packages/Trac-0.11dev_r6886-py2.4.egg/trac/config.py", line 462, in __get__
raise AttributeError('Cannot find an implementation of the "%s" '
AttributeError: Cannot find an implementation of the "ICaptchaMethod" interface named "ImageCaptcha". Please update the option spam-filter.captcha in trac.ini.
Attachments
Change History
comment:1 Changed 4 years ago by anonymous
comment:2 Changed 4 years ago by anonymous
This is a follow up to #7148
comment:3 follow-up: ↓ 4 Changed 4 years ago by shendric@…
Also, I tried installing PIL as you suggested and I tried to add the output to this ticket, however, the
Searching for PIL
Reading http://pypi.python.org/simple/PIL/
Reading http://www.pythonware.com/products/pil
Reading http://effbot.org/zone/pil-changes-115.htm
Reading http://effbot.org/downloads/#Imaging
No local packages or download links found for PIL
error: Could not find suitable distribution for Requirement.parse('PIL')
comment:4 in reply to: ↑ 3 Changed 4 years ago by anonymous
I keep getting an error (from edgewall's trac system) saying that the post is spam. The previous post was output from using easy install.
comment:5 Changed 4 years ago by cboos
- Summary changed from AttributeError: Cannot find an implementation of the "ICaptchaMethod" interface named "ImageCaptcha". Please update the option spam-filter.captcha in trac.ini. to Cannot find an implementation of the "ICaptchaMethod" interface named "ImageCaptcha".
If PIL is not "easy-installed", this won't work, even if you properly enabled the ImageCaptcha? component:
[components] ... tracspamfilter.captcha.image.* = enabled ...
Now, on Linux I got the same error as above when doing easy_install PIL, but:
easy_install http://effbot.org/media/downloads/Imaging-1.1.6.tar.gz
worked.
comment:6 Changed 4 years ago by anonymous
Ok, I've made the changes and I get a response without an error -- but no image. The source of the web page shows that there should be an image, but the resulting web page has no image.
<img width="33%" src="/trac/test/captcha/image" />
I tried to load an image directly and got the following error:
File "/usr/lib/python2.4/site-packages/Trac-0.11dev_r6886-py2.4.egg/trac/web/main.py", line 417, in _dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/Trac-0.11dev_r6886-py2.4.egg/trac/web/main.py", line 197, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.4/site-packages/TracSpamFilter-0.2.1cdev_r6883-py2.4.egg/tracspamfilter/captcha/image.py", line 71, in process_request self.font_size) File "/usr/lib/python2.4/site-packages/TracSpamFilter-0.2.1cdev_r6883-py2.4.egg/tracspamfilter/captcha/image.py", line 90, in gen_captcha font = ImageFont.truetype(fnt,fnt_sz) File "/usr/lib/python2.4/site-packages/PIL-1.1.6-py2.4-linux-i686.egg/ImageFont.py", line 205, in truetype return FreeTypeFont(filename, size, index, encoding) File "/usr/lib/python2.4/site-packages/PIL-1.1.6-py2.4-linux-i686.egg/ImageFont.py", line 121, in __init__ self.font = _imagingft.getfont(file, size, index, encoding)
Is it possible that PIL needs a fonts package that I don't have installed?
Thanks!
comment:7 Changed 4 years ago by cboos
The font provided by default (source:sandbox/spam-filter-captcha/tracspamfilter/fonts) is a TrueType font, so I guess we need the supporting package to be available at the time PIL is built (FreeType). We should perhaps provide another font, or detect that it can be used and revert to a builtin one.
http://www.pythonware.com/library/pil/handbook/imagefont.htm
comment:8 Changed 4 years ago by anonymous
I've installed freetype and reinstalled PIL. The output of the PIL installation is below:
$ sudo easy_install http://effbot.org/media/downloads/Imaging-1.1.6.tar.gz
Downloading http://effbot.org/media/downloads/Imaging-1.1.6.tar.gz
Processing Imaging-1.1.6.tar.gz
Running Imaging-1.1.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-P5LHvs/Imaging-1.1.6/egg-dist-tmp-iHmzk7
libImaging/Effects.c:210: warning: 'perlin_init' defined but not used
libImaging/Geometry.c:236: warning: 'quadratic_transform' defined but not used
libImaging/Quant.c:311: warning: 'test_sorted' defined but not used
libImaging/QuantHash.c:136: warning: '_hashtable_test' defined but not used
--------------------------------------------------------------------
PIL 1.1.6 BUILD SUMMARY
--------------------------------------------------------------------
version 1.1.6
platform linux2 2.4.3 (#2, Oct 6 2006, 07:52:30)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)]
--------------------------------------------------------------------
*** TKINTER support not available (Tcl/Tk 8.4 libraries needed)
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.
To check the build, run the selftest.py script.
zip_safe flag not set; analyzing archive contents...
IcnsImagePlugin: top-level module may be 'python -m' script
Image: module references __file__
ImageFileIO: top-level module may be 'python -m' script
ImageFont: top-level module may be 'python -m' script
ImageStat: top-level module may be 'python -m' script
OleFileIO: top-level module may be 'python -m' script
SpiderImagePlugin: top-level module may be 'python -m' script
WalImageFile: top-level module may be 'python -m' script
PIL 1.1.6 is already the active version in easy-install.pth
Installing pilconvert.py script to /usr/bin
Installing pildriver.py script to /usr/bin
Installing pilfile.py script to /usr/bin
Installing pilfont.py script to /usr/bin
Installing pilprint.py script to /usr/bin
Installed /usr/lib/python2.4/site-packages/PIL-1.1.6-py2.4-linux-i686.egg
Processing dependencies for PIL==1.1.6
Finished processing dependencies for PIL==1.1.6
The selftest.py indicates that 57 tests passed.
Sorry if this has nothing to do with trac, but I don't know what else to try. It looks like it is installed now, but I'm still getting the same error.
comment:9 Changed 4 years ago by anonymous
Wait, let me install TKINTER, will get back to you...
comment:10 Changed 4 years ago by cboos
Don't bother, TKINTER has nothing to do with this.
comment:11 Changed 3 years ago by rblank
- Milestone set to not applicable
comment:12 Changed 2 years ago by cboos
- Milestone not applicable deleted
- Resolution set to worksforme
- Status changed from new to closed
Looks like an InstallationIssue, last time I checked this was working fine.



trac.ini contains