py2app-“includes”和”packages”变量有什么区别?

py2app- What's the difference between the “includes” and “packages” variables?

我正在尝试使用py2app为Mac OS X打包一个Linux程序。my setup.py如下所示:

1
2
3
4
"includes":"sip,numpy,cherrypy,cPickle,md5,logging,shutil,xml.sax,PyQt4,PyQt4.QtCore",
"resources":"mnemosyne",
"iconfile":"pixmaps/mnemosyne.icns",
"packages":"mnemosyne,mnemosyne.pyqt_ui,mnemosyne.libmnemosyne,mnemosyne.libmnemosyne.translators,mnemosyne.libmnemosyne.card_types,mnemosyne.libmnemosyne.databases,mnemosyne.libmnemosyne.file_formats,mnemosyne.libmnemosyne.filters,mnemosyne.libmnemosyne.loggers,mnemosyne.libmnemosyne.plugins,mnemosyne.libmnemosyne.renderers,mnemosyne.libmnemosyne.render_chains,mnemosyne.libmnemosyne.schedulers,mnemosyne.libmnemosyne.controllers,mnemosyne.libmnemosyne.ui_components,mnemosyne.libmnemosyne.statistics_pages,mnemosyne.libmnemosyne.review_controllers,mnemosyne.libmnemosyne.criteria,mnemosyne.libmnemosyne.upgrades,mnemosyne.script,mnemosyne.webserver,openSM2sync,openSM2sync.binary_formats,openSM2sync.text_formats"

但是我意识到我也可以包括这样的模块:

1
2
3
"includes":"sip,numpy,cherrypy,cPickle,md5,logging,shutil,xml.sax,PyQt4,PyQt4.QtCore,mnemosyne.pyqt_ui.*,mnemosyne.libmnemosyne.*,mnemosyne.libmnemosyne.translators.*,mnemosyne.libmnemosyne.card_types.*,mnemosyne.libmnemosyne.databases.*,mnemosyne.libmnemosyne.file_formats.*,mnemosyne.libmnemosyne.filters.*,mnemosyne.libmnemosyne.loggers.*,mnemosyne.libmnemosyne.plugins.*,mnemosyne.libmnemosyne.renderers.*,mnemosyne.libmnemosyne.render_chains.*,mnemosyne.libmnemosyne.schedulers.*,mnemosyne.libmnemosyne.controllers.*,mnemosyne.libmnemosyne.ui_components.*,mnemosyne.libmnemosyne.statistics_pages.*,mnemosyne.libmnemosyne.review_controllers.*,mnemosyne.libmnemosyne.criteria.*,mnemosyne.libmnemosyne.upgrades.*,mnemosyne.script.*,mnemosyne.webserver.*,openSM2sync.*,openSM2sync.binary_formats.*,openSM2sync.text_format.*",
"resources":"mnemosyne",
"iconfile":"pixmaps/mnemosyne.icns",

我不是编码员,所以我不太明白这里发生了什么。我应该在什么时候使用"includes",什么时候使用"packages"?


您不需要显式命名在include字段中导入的所有内容。PY2APP有一个依赖性助行器,它可以告诉您使用了什么,并自动将其捆绑在一起。它并不总是适用于每个模块,因此includeexclude可以对过程进行微调。如果py2app以一些您不使用的额外位捆绑在一起,则使用exclude;您可以解压缩contents/resources/lib/pythonx.x/site-packages.zip以查看应用程序中包含的内容。

另外,我认为include是为了包含额外的python模块,这些模块不会自动包含在其中,因为packages将包含该位置中的所有内容,而不仅仅是python位,所以这些位置中的所有文件和文件类型都是如此。(我找不到链接或任何东西来证实这一点,但根据我的经验,这是我理解的)。


它们应该分别用于模块和包,在py2app选项参考中这样说:

网址:https://pythonhosted.org/py2app/options.html

根据http://www.network-theory.co.uk/docs/pytut/package s.html(本主题中的参考文献:python模块和python包之间的区别是什么?),包是"点式模块名"。.