创建独立的MoinMoin Wiki可执行文件

0 投票
1 回答
553 浏览
提问于 2025-04-17 00:08

我正在尝试创建一个独立的桌面版MoinMoin维基,这样我就可以把它放在光盘上分发给那些可能没有安装Python的人。我试过使用py2exe和bbfreeze,但都没有成功。它们都能生成一个可执行文件,但当我运行这个文件时,都会出现相同的错误:

C:\python_class\cdrom\bb-binary>wikiserver.exe
2011-08-22 15:06:21,312 WARNING MoinMoin.log:138 load_config for "C:\python_class\cdrom\bb-binary\wikiserverlogging.conf
" failed with "No section: 'formatters'".
2011-08-22 15:06:21,312 WARNING MoinMoin.log:139 using logging configuration read from built-in fallback in MoinMoin.log
 module!
Traceback (most recent call last):
  File "<string>", line 6, in <module>
  File "__main__.py", line 128, in <module>
  File "__main__wikiserver__.py", line 35, in <module>
  File "MoinMoin/script/__init__.py", line 138, in run
  File "MoinMoin/script/__init__.py", line 248, in mainloop
  File "MoinMoin/wikiutil.py", line 1078, in importBuiltinPlugin
  File "MoinMoin/wikiutil.py", line 1117, in builtinPlugins
  File "MoinMoin/util/pysupport.py", line 81, in importName
ImportError: No module named server

这是我为py2exe使用的setup.py脚本:

from distutils.core import setup
import py2exe
includes = ["MoinMoin"]
excludes = []
packages = []
setup(options = {
    "py2exe" : {
        "includes" : includes,
        "excludes" : excludes,
        "packages" : packages,
        "dist_dir" : "dist"
        }
    },
    console=["wikiserver.py"])

这是我为bbfreeze使用的setup.py脚本:

from bbfreeze import Freezer
includes = ["MoinMoin.*"]
excludes = []
f = Freezer(distdir="bb-binary", includes=includes, excludes=excludes)
f.addScript("wikiserver.py")
f.use_compression = 0
f.include_py = True
f()

如果有人能提供帮助或建议,我将非常感激!

谢谢,
道格

1 个回答

0

py2exe在识别需要包含哪些模块时有一些限制,特别是当这些模块是根据条件导入的时候。例如,

import module

单独写这一行是可以工作的,但

if someCondition:
    import module

就不行。很多大型框架,比如MoinMoin,通常只在需要的时候才会导入它们需要用到的模块。不幸的是,你需要手动告诉py2exe包含这些缺失的模块,这个过程可能需要一些反复尝试,直到你找到所有需要的模块。

想了解如何手动包含模块,可以查看这里

撰写回答