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