我正在尝试创建MoinMoin wiki的独立桌面版本,以便我可以将它分发到CDROM上,以便安装或不安装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()
如果有人有任何帮助或建议,我将不胜感激!
谢谢, 道格
答案 0 :(得分:0)
py2exe在识别要包含的模块方面存在局限性,尤其是在有条件地导入模块时。例如,
import module
然而,在它自己的路线上会起作用
if someCondition:
import module
不会。与许多大型框架的情况一样,MoinMoin仅在需要时导入需要使用的模块。不幸的是,您需要告诉py2exe手动包含这些缺失的模块,这将需要一些反复试验,直到找到您需要的所有模块。
有关如何手动包含模块的信息,请参阅here。