How to do a basic installation of MoinMoin on your system.

Contents

Before you can integrate MoinMoin into your web environment, you have to install the MoinMoin source code and data files using the standard Python distutils mechanism (setup.py). This page explains the steps you usually need to take to do this. For more details on the distutils installation process, consult the Installing Python Modules document in your Python documentation set.

The installation is similar on Windows and Linux (and other POSIX-type systems; for simplicity, we just say "Linux" in the docs).

Check if Python is working

MoinMoin needs Python to run, so the first step is to check if an usable version of Python is installed and correctly set-up. If this is not the case, you will have to fix that before you can proceed.

The CHANGES file in the MoinMoin archive mentions what versions are supported. Python 2.3 is the minimum requirement for MoinMoin 1.5, but we suggest you use the latest Python release version.

You can download Python at http://www.python.org/download/.

If you are pretty sure an acceptable version of Python is installed but the commands below do not work, this may be because your Python files are not in the search path. Correctly setting the search path is outside the scope of this document; please ask for help on your favorite Python, Linux, or Windows discussion board.

If you have shell access, checking if Python is working is very simple. Just type the following command, and look at the result:

> python -V
Python 2.3.4

If you don't have shell access, you can try using this pythontest.cgi script (it assumes that you are using a Linux kind of webserver). Upload the script to your cgi-bin directory, use chmod a+rx pythontest.cgi (or a similar command in your FTP program) to make it executable, and invoke it using your web browser. --> -->

ImportError

No module named sctable-1.5.2-5

If you want to report a bug, please save this page and attach it to your bug report.

Traceback

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

  1. /usr/local/lib/python2.5/site-packages/MoinMoin/request.py in run (self=<MoinMoin.request.RequestCGI object at 0x7fd7948f6450>)

    1. 1205 self.page.send_page(self, msg=msg)
    2. 1206 else:
    3. 1207 handler(self.page.page_name, self)
    4. 1208
    5. 1209 # generate page footer (actions that do not want this footer use
    • handler = <function do_show at 0x1549578>
    • self = <MoinMoin.request.RequestCGI object at 0x7fd7948f6450>
    • self.page = <MoinMoin.Page.Page instance at 0x152d518>
    • self.page.page_name = u'HelpOnInstalling/BasicInstallation'
  2. /usr/local/lib/python2.5/site-packages/MoinMoin/wikiaction.py in do_show (pagename=u'HelpOnInstalling/BasicInstallation', request=<MoinMoin.request.RequestCGI object at 0x7fd7948f6450>)

    1. 466 else:
    2. 467 request.cacheable = 1
    3. 468 Page(request, pagename).send_page(request, count_hit=1)
    4. 469
    5. 470
    • global Page = <class MoinMoin.Page.Page at 0x14d62f0>
    • request = <MoinMoin.request.RequestCGI object at 0x7fd7948f6450>
    • pagename = u'HelpOnInstalling/BasicInstallation'
    • ).send_page undefined
    • count_hit undefined
  3. /usr/local/lib/python2.5/site-packages/MoinMoin/Page.py in send_page (self=<MoinMoin.Page.Page instance at 0x162eb48>, request=<MoinMoin.request.RequestCGI object at 0x7fd7948f6450>, msg='', **keywords={'count_hit': 1})

    1. 1254 format_args=pi_formatargs,
    2. 1255 do_cache=do_cache,
    3. 1256 start_line=pi_lines)
    4. 1257
    5. 1258 # check for pending footnotes
    • start_line undefined
    • pi_lines = 7
  4. /usr/local/lib/python2.5/site-packages/MoinMoin/Page.py in send_page_content (self=<MoinMoin.Page.Page instance at 0x162eb48>, request=<MoinMoin.request.RequestCGI object at 0x7fd7948f6450>, Parser=<class MoinMoin.parser.wiki.Parser at 0x172c170>, body=u"\n## Description\n'''How to do a basic installatio..., and easily upgrade to new Moin``Moin versions.\n", format_args=u'', do_cache=1, **kw={'start_line': 7})

    1. 1341
    2. 1342 if not (do_cache and self.canUseCache(Parser)):
    3. 1343 self.format(parser)
    4. 1344 else:
    5. 1345 try:
    • self = <MoinMoin.Page.Page instance at 0x162eb48>
    • self.format = <bound method Page.format of <MoinMoin.Page.Page instance at 0x162eb48>>
    • parser = <MoinMoin.parser.wiki.Parser instance at 0x15feb90>
  5. /usr/local/lib/python2.5/site-packages/MoinMoin/Page.py in format (self=<MoinMoin.Page.Page instance at 0x162eb48>, parser=<MoinMoin.parser.wiki.Parser instance at 0x15feb90>)

    1. 1362 def format(self, parser):
    2. 1363 """ Format and write page content without caching """
    3. 1364 parser.format(self.formatter)
    4. 1365
    5. 1366 def execute(self, request, parser, code):
    • parser = <MoinMoin.parser.wiki.Parser instance at 0x15feb90>
    • parser.format = <bound method Parser.format of <MoinMoin.parser.wiki.Parser instance at 0x15feb90>>
    • self = <MoinMoin.Page.Page instance at 0x162eb48>
    • self.formatter = <MoinMoin.formatter.text_html.Formatter instance at 0x162e4d0>
  6. /usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in format (self=<MoinMoin.parser.wiki.Parser instance at 0x15feb90>, formatter=<MoinMoin.formatter.text_html.Formatter instance at 0x162e4d0>)

    1. 1098
    2. 1099 # Scan line, format and write
    3. 1100 formatted_line = self.scan(scan_re, line)
    4. 1101 self.request.write(formatted_line)
    5. 1102
    • formatted_line = u'<p class="line862">If you don\'t have shell acces...xecutable, and invoke it using your web browser. '
    • self = <MoinMoin.parser.wiki.Parser instance at 0x15feb90>
    • self.scan = <bound method Parser.scan of <MoinMoin.parser.wiki.Parser instance at 0x15feb90>>
    • scan_re = <_sre.SRE_Pattern object at 0x18f51d0>
    • line = u'inline:pythontest.cgi '
  7. /usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in scan (self=<MoinMoin.parser.wiki.Parser instance at 0x15feb90>, scan_re=<_sre.SRE_Pattern object at 0x18f51d0>, line=u'inline:pythontest.cgi ')

    1. 874 self.in_table or self.in_list):
    2. 875 result.append(self.formatter.paragraph(1, css_class="line867"))
    3. 876 result.append(self.replace(match))
    4. 877 lastpos = match.end()
    5. 878
    • result = ['<p class="line867">']
    • result.append = <built-in method append of list object at 0x18c47e8>
    • self = <MoinMoin.parser.wiki.Parser instance at 0x15feb90>
    • self.replace = <bound method Parser.replace of <MoinMoin.parser.wiki.Parser instance at 0x15feb90>>
    • match = <_sre.SRE_Match object at 0x1892c20>
  8. /usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in replace (self=<MoinMoin.parser.wiki.Parser instance at 0x15feb90>, match=<_sre.SRE_Match object at 0x1892c20>)

    1. 903 # Get replace method and replece hit
    2. 904 replace = getattr(self, '_' + type + '_repl')
    3. 905 result.append(replace(hit))
    4. 906 return ''.join(result)
    5. 907 else:
    • result = []
    • result.append = <built-in method append of list object at 0x18c4950>
    • replace = <bound method Parser._url_repl of <MoinMoin.parser.wiki.Parser instance at 0x15feb90>>
    • hit = u'inline:pythontest.cgi'
  9. /usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in _url_repl (self=<MoinMoin.parser.wiki.Parser instance at 0x15feb90>, word=u'inline:pythontest.cgi')

    1. 374 return self.interwiki([word])
    2. 375 if scheme in self.attachment_schemas:
    3. 376 return self.attachment([word])
    4. 377
    5. 378 if wikiutil.isPicture(word):
    • self = <MoinMoin.parser.wiki.Parser instance at 0x15feb90>
    • self.attachment = <bound method Parser.attachment of <MoinMoin.parser.wiki.Parser instance at 0x15feb90>>
    • word = u'inline:pythontest.cgi'
  10. /usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in attachment (self=<MoinMoin.parser.wiki.Parser instance at 0x15feb90>, url_and_text=[u'inline:pythontest.cgi'], **kw={})

    1. 225 # inline the attachment
    2. 226 if inline:
    3. 227 return self.formatter.attachment_inlined(url, text)
    4. 228
    5. 229 return self.formatter.attachment_link(url, text)
    • self = <MoinMoin.parser.wiki.Parser instance at 0x15feb90>
    • self.formatter = <MoinMoin.formatter.text_html.Formatter instance at 0x162e4d0>
    • self.formatter.attachment_inlined = <bound method Formatter.attachment_inlined of <M...atter.text_html.Formatter instance at 0x162e4d0>>
    • url = u'pythontest.cgi'
    • text = u'pythontest.cgi'
  11. /usr/local/lib/python2.5/site-packages/MoinMoin/formatter/base.py in attachment_inlined (self=<MoinMoin.formatter.text_html.Formatter instance at 0x162e4d0>, url=u'pythontest.cgi', text=u'pythontest.cgi', **kw={})

    1. 118 fpath = AttachFile.getFilename(self.request, pagename, fname)
    2. 119 base, ext = os.path.splitext(filename)
    3. 120 Parser = wikiutil.getParserForExtension(self.request.cfg, ext)
    4. 121 if Parser is not None:
    5. 122 try:
    • Parser undefined
    • global wikiutil = <module 'MoinMoin.wikiutil' from '/usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.pyc'>
    • wikiutil.getParserForExtension = <function getParserForExtension at 0x1404938>
    • self = <MoinMoin.formatter.text_html.Formatter instance at 0x162e4d0>
    • self.request = <MoinMoin.request.RequestCGI object at 0x7fd7948f6450>
    • self.request.cfg = <wikiconfig.Config instance at 0x14b9908>
    • ext = u'.cgi'
  12. /usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in getParserForExtension (cfg=<wikiconfig.Config instance at 0x14b9908>, extension=u'.cgi')

    1. 907 for pname in getPlugins('parser', cfg):
    2. 908 try:
    3. 909 Parser = importPlugin(cfg, 'parser', pname, 'Parser')
    4. 910 except PluginMissingError:
    5. 911 continue
    • Parser = <class wikiconfig.plugin.parser.raw.Parser at 0x18d45f0>
    • global importPlugin = <function importPlugin at 0x14045f0>
    • cfg = <wikiconfig.Config instance at 0x14b9908>
    • pname = 'sctable-1.5.2-5'
  13. /usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in importPlugin (cfg=<wikiconfig.Config instance at 0x14b9908>, kind='parser', name='sctable-1.5.2-5', function='Parser')

    1. 802 """
    2. 803 try:
    3. 804 return importWikiPlugin(cfg, kind, name, function)
    4. 805 except PluginMissingError:
    5. 806 return importBuiltinPlugin(kind, name, function)
    • global importWikiPlugin = <function importWikiPlugin at 0x1404668>
    • cfg = <wikiconfig.Config instance at 0x14b9908>
    • kind = 'parser'
    • name = 'sctable-1.5.2-5'
    • function = 'Parser'
  14. /usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in importWikiPlugin (cfg=<wikiconfig.Config instance at 0x14b9908>, kind='parser', name='sctable-1.5.2-5', function='Parser')

    1. 815 raise PluginMissingError
    2. 816 moduleName = '%s.plugin.%s.%s' % (cfg.siteid, kind, name)
    3. 817 return importNameFromPlugin(moduleName, function)
    4. 818
    5. 819
    • global importNameFromPlugin = <function importNameFromPlugin at 0x1404758>
    • moduleName = 'wikiconfig.plugin.parser.sctable-1.5.2-5'
    • function = 'Parser'
  15. /usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in importNameFromPlugin (moduleName='wikiconfig.plugin.parser.sctable-1.5.2-5', name='Parser')

    1. 834 Raise PluginAttributeError if name does not exists.
    2. 835 """
    3. 836 module = __import__(moduleName, globals(), {}, [name])
    4. 837 try:
    5. 838 return getattr(module, name)
    • module undefined
    • builtin __import__ = <built-in function __import__>
    • moduleName = 'wikiconfig.plugin.parser.sctable-1.5.2-5'
    • builtin globals = <built-in function globals>
    • name = 'Parser'

ImportError

No module named sctable-1.5.2-5

  • args = ('No module named sctable-1.5.2-5',)
  • message = 'No module named sctable-1.5.2-5'

System Details

  • Date: Wed, 10 Jun 2026 11:40:44 +0000
  • Platform: Linux mx.ipvision.com.ar 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64
  • Python: Python 2.5.4 (/usr/local/bin/python2.5)
  • MoinMoin: Release 1.5.8 (release)