How to do a basic installation of MoinMoin on your system.
Contents
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).
We use text such as > command arguments to show what you have to type at the command prompt (also known as shell, terminal, etc.). In our examples "> " is the prompt, you don't have to type it in, you have to type what comes after it. Lines that do not begin with "> " are the answers to the commands you have typed. Read them carefully.
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.
/usr/local/lib/python2.5/site-packages/MoinMoin/request.py in run (self=<MoinMoin.request.RequestCGI object at 0x7fced6182450>)
- 1205 self.page.send_page(self, msg=msg)
- 1206 else:
- 1207 handler(self.page.page_name, self)
- 1208
- 1209 # generate page footer (actions that do not want this footer use
- handler = <function do_show at 0x2432578>
- self = <MoinMoin.request.RequestCGI object at 0x7fced6182450>
- self.page = <MoinMoin.Page.Page instance at 0x2415b00>
- self.page.page_name = u'HelpOnInstalling/BasicInstallation'
/usr/local/lib/python2.5/site-packages/MoinMoin/wikiaction.py in do_show (pagename=u'HelpOnInstalling/BasicInstallation', request=<MoinMoin.request.RequestCGI object at 0x7fced6182450>)
- 466 else:
- 467 request.cacheable = 1
- 468 Page(request, pagename).send_page(request, count_hit=1)
- 469
- 470
- global Page = <class MoinMoin.Page.Page at 0x23be2f0>
- request = <MoinMoin.request.RequestCGI object at 0x7fced6182450>
- pagename = u'HelpOnInstalling/BasicInstallation'
- ).send_page undefined
- count_hit undefined
/usr/local/lib/python2.5/site-packages/MoinMoin/Page.py in send_page (self=<MoinMoin.Page.Page instance at 0x2516830>, request=<MoinMoin.request.RequestCGI object at 0x7fced6182450>, msg='', **keywords={'count_hit': 1})
- 1254 format_args=pi_formatargs,
- 1255 do_cache=do_cache,
- 1256 start_line=pi_lines)
- 1257
- 1258 # check for pending footnotes
- start_line undefined
- pi_lines = 7
/usr/local/lib/python2.5/site-packages/MoinMoin/Page.py in send_page_content (self=<MoinMoin.Page.Page instance at 0x2516830>, request=<MoinMoin.request.RequestCGI object at 0x7fced6182450>, Parser=<class MoinMoin.parser.wiki.Parser at 0x2613170>, 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})
- 1341
- 1342 if not (do_cache and self.canUseCache(Parser)):
- 1343 self.format(parser)
- 1344 else:
- 1345 try:
- self = <MoinMoin.Page.Page instance at 0x2516830>
- self.format = <bound method Page.format of <MoinMoin.Page.Page instance at 0x2516830>>
- parser = <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>
/usr/local/lib/python2.5/site-packages/MoinMoin/Page.py in format (self=<MoinMoin.Page.Page instance at 0x2516830>, parser=<MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>)
- 1362 def format(self, parser):
- 1363 """ Format and write page content without caching """
- 1364 parser.format(self.formatter)
- 1365
- 1366 def execute(self, request, parser, code):
- parser = <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>
- parser.format = <bound method Parser.format of <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>>
- self = <MoinMoin.Page.Page instance at 0x2516830>
- self.formatter = <MoinMoin.formatter.text_html.Formatter instance at 0x2516560>
/usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in format (self=<MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>, formatter=<MoinMoin.formatter.text_html.Formatter instance at 0x2516560>)
- 1098
- 1099 # Scan line, format and write
- 1100 formatted_line = self.scan(scan_re, line)
- 1101 self.request.write(formatted_line)
- 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 0x24e4cb0>
- self.scan = <bound method Parser.scan of <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>>
- scan_re = <_sre.SRE_Pattern object at 0x27dd1e0>
- line = u'inline:pythontest.cgi '
/usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in scan (self=<MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>, scan_re=<_sre.SRE_Pattern object at 0x27dd1e0>, line=u'inline:pythontest.cgi ')
- 874 self.in_table or self.in_list):
- 875 result.append(self.formatter.paragraph(1, css_class="line867"))
- 876 result.append(self.replace(match))
- 877 lastpos = match.end()
- 878
- result = ['<p class="line867">']
- result.append = <built-in method append of list object at 0x27ac7e8>
- self = <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>
- self.replace = <bound method Parser.replace of <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>>
- match = <_sre.SRE_Match object at 0x277a7f0>
/usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in replace (self=<MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>, match=<_sre.SRE_Match object at 0x277a7f0>)
- 903 # Get replace method and replece hit
- 904 replace = getattr(self, '_' + type + '_repl')
- 905 result.append(replace(hit))
- 906 return ''.join(result)
- 907 else:
- result = []
- result.append = <built-in method append of list object at 0x27ac950>
- replace = <bound method Parser._url_repl of <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>>
- hit = u'inline:pythontest.cgi'
/usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in _url_repl (self=<MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>, word=u'inline:pythontest.cgi')
- 374 return self.interwiki([word])
- 375 if scheme in self.attachment_schemas:
- 376 return self.attachment([word])
- 377
- 378 if wikiutil.isPicture(word):
- self = <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>
- self.attachment = <bound method Parser.attachment of <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>>
- word = u'inline:pythontest.cgi'
/usr/local/lib/python2.5/site-packages/MoinMoin/parser/wiki.py in attachment (self=<MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>, url_and_text=[u'inline:pythontest.cgi'], **kw={})
- 225 # inline the attachment
- 226 if inline:
- 227 return self.formatter.attachment_inlined(url, text)
- 228
- 229 return self.formatter.attachment_link(url, text)
- self = <MoinMoin.parser.wiki.Parser instance at 0x24e4cb0>
- self.formatter = <MoinMoin.formatter.text_html.Formatter instance at 0x2516560>
- self.formatter.attachment_inlined = <bound method Formatter.attachment_inlined of <M...atter.text_html.Formatter instance at 0x2516560>>
- url = u'pythontest.cgi'
- text = u'pythontest.cgi'
/usr/local/lib/python2.5/site-packages/MoinMoin/formatter/base.py in attachment_inlined (self=<MoinMoin.formatter.text_html.Formatter instance at 0x2516560>, url=u'pythontest.cgi', text=u'pythontest.cgi', **kw={})
- 118 fpath = AttachFile.getFilename(self.request, pagename, fname)
- 119 base, ext = os.path.splitext(filename)
- 120 Parser = wikiutil.getParserForExtension(self.request.cfg, ext)
- 121 if Parser is not None:
- 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 0x22ec938>
- self = <MoinMoin.formatter.text_html.Formatter instance at 0x2516560>
- self.request = <MoinMoin.request.RequestCGI object at 0x7fced6182450>
- self.request.cfg = <wikiconfig.Config instance at 0x23a1908>
- ext = u'.cgi'
/usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in getParserForExtension (cfg=<wikiconfig.Config instance at 0x23a1908>, extension=u'.cgi')
- 907 for pname in getPlugins('parser', cfg):
- 908 try:
- 909 Parser = importPlugin(cfg, 'parser', pname, 'Parser')
- 910 except PluginMissingError:
- 911 continue
- Parser = <class wikiconfig.plugin.parser.raw.Parser at 0x27bc5f0>
- global importPlugin = <function importPlugin at 0x22ec5f0>
- cfg = <wikiconfig.Config instance at 0x23a1908>
- pname = 'sctable-1.5.2-5'
/usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in importPlugin (cfg=<wikiconfig.Config instance at 0x23a1908>, kind='parser', name='sctable-1.5.2-5', function='Parser')
- 802 """
- 803 try:
- 804 return importWikiPlugin(cfg, kind, name, function)
- 805 except PluginMissingError:
- 806 return importBuiltinPlugin(kind, name, function)
- global importWikiPlugin = <function importWikiPlugin at 0x22ec668>
- cfg = <wikiconfig.Config instance at 0x23a1908>
- kind = 'parser'
- name = 'sctable-1.5.2-5'
- function = 'Parser'
/usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in importWikiPlugin (cfg=<wikiconfig.Config instance at 0x23a1908>, kind='parser', name='sctable-1.5.2-5', function='Parser')
- 815 raise PluginMissingError
- 816 moduleName = '%s.plugin.%s.%s' % (cfg.siteid, kind, name)
- 817 return importNameFromPlugin(moduleName, function)
- 818
- 819
- global importNameFromPlugin = <function importNameFromPlugin at 0x22ec758>
- moduleName = 'wikiconfig.plugin.parser.sctable-1.5.2-5'
- function = 'Parser'
/usr/local/lib/python2.5/site-packages/MoinMoin/wikiutil.py in importNameFromPlugin (moduleName='wikiconfig.plugin.parser.sctable-1.5.2-5', name='Parser')
- 834 Raise PluginAttributeError if name does not exists.
- 835 """
- 836 module = __import__(moduleName, globals(), {}, [name])
- 837 try:
- 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:32:26 +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)