3

我正在使用 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打包后找不到plugins目录。我设置目录的代码行与其他网页相同:self.manager.setPluginPlaces(["plugins"])

编辑3:

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

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

编辑4:

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

print(os.listdir('.'))

编辑5:

这是永无止境的故事。我已经使用 PYInstaller 制作了一个可执行文件来检查问题是否是 py2exe。它不起作用。现在我认为问题出在 Yapsy 上。有任何想法吗?

4

2 回答 2

2

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

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

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

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

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

import logging
logging.basicConfig(level=logging.DEBUG)
于 2012-11-09T09:34:42.163 回答
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
      )

然而只是一个疯狂的猜测

于 2012-11-08T18:42:27.810 回答