Archive

Posts Tagged ‘Solution’

Fixing textext on Inkscape 0.48

November 13, 2010 101 comments

I encounter one problem today. My textext didn’t work on Inkscape 0.48, I get the error

textext.py:55: DeprecationWarning: the md5 module is deprecated; use hashlib instead import os, sys, tempfile, traceback, glob, re, md5, copy
Traceback (most recent call last): File "textext.py", line 306, in <module>
raise RuntimeError("Neither pygtk nor Tkinter is available!")
RuntimeError: Neither pygtk nor Tkinter is available!

The error is due to a module depreciated on the python version used on Inkscape, and that Textext uses. However, it was pretty easy to solve.

  • First you need to download the python packages that are missing, thanks to David Gleich whom packed everything together, avoiding us the trouble of download them and put the pieces together.
  • Unzip them C:\Program Files\Inkscape\python\Lib\site-packages

Then you need to update your textext files,  thanks to Pascal Schulthess for the solution.

  • Go to C:\Program Files\Inkscape\share\extensions, and open textext.py file
  • Now replace
    import inkex
    import os, sys, tempfile, traceback, glob, re, md5, copy
    from lxml import etree
    

    and replace it for

    import inkex
    import os, sys, tempfile, traceback, glob, re, copy
    import hashlib
    from lxml import etree
    
  • And replace this
        def __init__(self, document):
            PdfConverterBase.__init__(self, document)
            self.hash = None
    
        def convert(self, *a, **kw):
            # compute hash for generating unique ids for sub-elements
            self.hash = md5.new('%s%s' % (a, kw)).hexdigest()[:8]
            return PdfConverterBase.convert(self, *a, **kw)
    
        def pdf_to_svg(self):
            exec_command(['pdf2svg', self.tmp('pdf'), self.tmp('svg'), '1'])
    

    for

        def __init__(self, document):
            PdfConverterBase.__init__(self, document)
            self.hash = None
            USE_GTK = False
    
        def convert(self, *a, **kw):
            # compute hash for generating unique ids for sub-elements
            m = hashlib.md5()
            m.update('%s%s' % (a, kw))
            self.hash = m.hexdigest()[:8]
            return PdfConverterBase.convert(self, *a, **kw)
    
        def pdf_to_svg(self):
            exec_command(['pdf2svg', self.tmp('pdf'), self.tmp('svg'), '1'])
    

Restart Inkscape and that would do the work. :mrgreen: