Python 如何将Yapsy包含在py2exe中?

Python 如何将Yapsy包含在py2exe中?,python,plugins,py2exe,Python,Plugins,Py2exe,我正在使用Python。我的文件GUI.py使用Yapsy将新插件包含到我的软件中。我已经完成了所有的工作,现在我想使用py2exe生成一个可执行文件。我不知道如何才能订购py2exe,使其包含Yapsy及其所有模块。我已经试过了,但不起作用: opts = { 'py2exe': { "includes" : ["yapsy.PluginManager","sip", "matplotlib.backends", "matplotlib.backends.backend_qt4agg

我正在使用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
      )
我在这个链接中发现了一些东西,但它并不能解决我的问题

在每个插件的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。但它不起作用。现在,我认为问题出在雅皮士身上。有什么想法吗?

你可能需要包括所有的雅普赛人

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
      )

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

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

  • 调用self.manager.setPluginPlaces([“plugins”])时,请注意路径“plugin”可能与您认为的目录无关。您应该使用py2exe的“我在哪里”常见问题解答中的提示,使用更具体的路径:

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

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

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

谢谢Xavier的回答,但我以前尝试过,但没有效果。什么叫“不工作”堆栈跟踪?谢谢你的回答。为了知道我是谁,我使用了以下代码行:os.getcwd(),结果是包含插件目录的目录。我尝试了第一种选择,但是jpath出现了一些问题。我也这么做,但这个链接不起作用。第二个选项,我实际上正在使用。我继续工作。非常感谢您的时间。os.getcwd()对于打包的应用程序不是一个好的选择,我在帖子中的py2exe链接建议在打包应用程序时使用sys.executable(可以用hasattr(sys.freezed)测试)——我不确定他们为什么使用jpath,您可能希望尝试不使用它:重要的一点是检查在运行打包的应用程序时,路径是否仍然正确(打包之前路径正确的事实通常是无关紧要的)。我使用了替代解决方案,路径是否正确。我已经列出了目录,插件目录在里面。因此,可能路径是好的,插件无法加载,如果你还没有这样做,你可以按照我的指示激活yapsy的日志:因为我们也在yapsy的追踪器上讨论这个问题:我将停止更新这个评论线程。