如何在py2exe中包含Yapsy?

时间:2012-11-08 18:37:25

标签: python plugins py2exe

我正在使用Python。我的文件GUI.py使用Yapsy将新插件包含到我的软件中。我已完成所有工作,现在我想使用py2exe生成可执行文件。我不知道如何命令py2exe包含Yapsy及其所有模块。我试过了,它不起作用:

opts = {
    'py2exe': { "includes" : ["yapsy.PluginManager","sip", "matplotlib.backends",  "matplotlib.backends.backend_qt4agg",
                               "matplotlib.figure","pylab", "numpy","matplotlib.backends.backend_tkagg"]}

...

setup(
      name='PImageQT',
      version='1.0',
      author='Jaime',
      package={'images/*', 'Windows6S/*', 'modulos6S/*', 'OperacionesPlugins/*'},
      scripts=['GUI.py'],
      console=["GUI.py"],
      options=opts,
      data_files=data_files,
      zipfile=None
      )

我在此链接http://notinthestars.blogspot.com.es/2011/04/using-python-plugin-scripts-with-py2exe.html中找到了一些内容,但它无法解决我的问题。

在我的每个插件的Gui.py文件中,我在菜单中添加了一个动作。可执行文件中的此菜单不会出现。

有谁知道我必须怎么做?

非常感谢。

编辑:

我使用断点和yapsy工作正常,但它没有找到我的插件目录。目录的名称是相同的。

编辑2:

路径正常,目录进入路径。我不知道为什么用py2exe打包后找不到插件目录。我设置目录的代码行与其他网页相同:self.manager.setPluginPlaces(["plugins"])

编辑3:

我尝试使用相对路径来搜索插件,但它不起作用。

self.manager.setPluginPlaces([os.getcwd() + os.sep + "plugins"])

编辑4:

今天,我试图列出目录是我和我的目录“插件”在。我不明白,但问题仍在继续。

print(os.listdir('.'))

编辑5:

这是无休止的故事。我已经使用PYInstaller制作一个可执行文件来检查问题是否是py2exe。它不起作用。现在我觉得问题是Yapsy。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

从你的编辑看来,问题似乎与访问一些打包的插件有关(而不是本身的yapsy模块)。

为此您可能需要检查以下两点:

  • 当您致电self.manager.setPluginPlaces(["plugins"])时,请注意路径“插件”可能与您认为的目录无关。您应该使用更具体的路径,使用py2exe的“我在哪里”常见问题解答提示:http://www.py2exe.org/index.cgi/WhereAmI

  • 您也可以尝试将插件打包为data_files(就像您链接到的网页一样),我不确定如何处理“package”参数(在您的代码示例中)通过py2exe。

编辑:对于以后可能会来的人,答案在下面的评论中,基本上发生的事情是其中一个插件有导入错误(一个不依赖于py2exe的依赖项)和只有在正确配置/激活python的标准日志记录时才能看到此导入错误:

import logging
logging.basicConfig(level=logging.DEBUG)

答案 1 :(得分:0)

你可能需要包括所有的yapsy

opts = {
    'py2exe': { "includes" : ["yapsy","sip", "matplotlib.backends",  "matplotlib.backends.backend_qt4agg",
                               "matplotlib.figure","pylab", "numpy","matplotlib.backends.backend_tkagg"]}

...

setup(
      name='PImageQT',
      version='1.0',
      author='Jaime',
      package={'images/*', 'Windows6S/*', 'modulos6S/*', 'OperacionesPlugins/*'},
      scripts=['GUI.py'],
      console=["GUI.py"],
      options=opts,
      data_files=data_files,
      zipfile=None
      )

只是一个疯狂的猜测