overview
wiki

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).

  • (!) 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 Image

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/lib/python2.4/site-packages/MoinMoin/request.py in run (self=<MoinMoin.request.RequestModPy object>)

    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>
    • self = <MoinMoin.request.RequestModPy object>
    • self.page = <MoinMoin.Page.Page instance>
    • self.page.page_name = u'HelpOnInstalling/BasicInstallation'
  2. /usr/lib/python2.4/site-packages/MoinMoin/wikiaction.py in do_show (pagename=u'HelpOnInstalling/BasicInstallation', request=<MoinMoin.request.RequestModPy object>)

    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>
    • request = <MoinMoin.request.RequestModPy object>
    • pagename = u'HelpOnInstalling/BasicInstallation'
    • ).send_page undefined
    • count_hit undefined
  3. /usr/lib/python2.4/site-packages/MoinMoin/Page.py in send_page (self=<MoinMoin.Page.Page instance>, request=<MoinMoin.request.RequestModPy object>, msg='', **keywords={'count_hit': 1})

    1. 1257 format_args=pi_formatargs,
    2. 1258 do_cache=do_cache,
    3. 1259 start_line=pi_lines)
    4. 1260
    5. 1261 # check for pending footnotes
    • start_line undefined
    • pi_lines = 7
  4. /usr/lib/python2.4/site-packages/MoinMoin/Page.py in send_page_content (self=<MoinMoin.Page.Page instance>, request=<MoinMoin.request.RequestModPy object>, Parser=<class MoinMoin.parser.wiki.Parser>, 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. 1348 try:
    2. 1349 code = self.loadCache(request)
    3. 1350 self.execute(request, parser, code)
    4. 1351 except Exception, e:
    5. 1352 if not is_cache_exception(e):
    • self = <MoinMoin.Page.Page instance>
    • self.execute = <bound method Page.execute of <MoinMoin.Page.Page instance>>
    • request = <MoinMoin.request.RequestModPy object>
    • parser = <MoinMoin.parser.wiki.Parser instance>
    • code = <code object ? at 0xb5ea0a0, file "HelpOnInstalling/BasicInstallation", line 2>
  5. /usr/lib/python2.4/site-packages/MoinMoin/Page.py in execute (self=<MoinMoin.Page.Page instance>, request=<MoinMoin.request.RequestModPy object>, parser=<MoinMoin.parser.wiki.Parser instance>, code=<code object ? at 0xb5ea0a0, file "HelpOnInstalling/BasicInstallation", line 2>)

    1. 1377 __file__ = os.path.join(MoinMoin.__loader__.archive, 'dummy')
    2. 1378 try:
    3. 1379 exec code
    4. 1380 except 'CacheNeedsUpdate':
    5. 1381 raise Exception('CacheNeedsUpdate')
    • code = <code object ? at 0xb5ea0a0, file "HelpOnInstalling/BasicInstallation", line 2>
  6. /HelpOnInstalling/BasicInstallation in ?

  7. /usr/lib/python2.4/site-packages/MoinMoin/formatter/base.py in attachment_inlined (self=<MoinMoin.formatter.text_html.Formatter instance>, 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/lib/python2.4/site-packages/MoinMoin/wikiutil.pyc'>
    • wikiutil.getParserForExtension = <function getParserForExtension>
    • self = <MoinMoin.formatter.text_html.Formatter instance>
    • self.request = <MoinMoin.request.RequestModPy object>
    • self.request.cfg = <m6chimera.Config instance>
    • ext = u'.cgi'
  8. /usr/lib/python2.4/site-packages/MoinMoin/wikiutil.py in getParserForExtension (cfg=<m6chimera.Config instance>, 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 m6chimera.plugin.parser.Frame.Parser>
    • global importPlugin = <function importPlugin>
    • cfg = <m6chimera.Config instance>
    • pname = 'Gallery2'
  9. /usr/lib/python2.4/site-packages/MoinMoin/wikiutil.py in importPlugin (cfg=<m6chimera.Config instance>, kind='parser', name='Gallery2', 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>
    • cfg = <m6chimera.Config instance>
    • kind = 'parser'
    • name = 'Gallery2'
    • function = 'Parser'
  10. /usr/lib/python2.4/site-packages/MoinMoin/wikiutil.py in importWikiPlugin (cfg=<m6chimera.Config instance>, kind='parser', name='Gallery2', 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>
    • moduleName = 'm6chimera.plugin.parser.Gallery2'
    • function = 'Parser'
  11. /usr/lib/python2.4/site-packages/MoinMoin/wikiutil.py in importNameFromPlugin (moduleName='m6chimera.plugin.parser.Gallery2', 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 = 'm6chimera.plugin.parser.Gallery2'
    • builtin globals = <built-in function globals>
    • name = 'Parser'
  12. /var/www/moin/basewiki/data/plugin/parser/Gallery2.py in ?

    1. 343 from MoinMoin.Page import Page
    2. 344
    3. 345 import os, re, sys, Image, StringIO, codecs
    4. 346 from random import randint
    5. 347
    • os = None
    • re = None
    • sys = None
    • Image undefined
    • StringIO undefined
    • codecs undefined

ImportError

No module named Image

  • args = ('No module named Image',)

System Details