7

我正在尝试使用 py2app 为 Mac OS X 打包一个 Linux 程序。我的 setup.py 看起来像这样:

"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"

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

"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”?

4

2 回答 2

6

您不需要明确命名您在该include字段中导入的所有内容。py2app 有一个依赖walker,它将能够告诉你使用了什么并自动为你捆绑它。它并不总是适用于每个模块,因此include可以exclude微调流程。exclude如果 py2app 捆绑了一些您不使用的额外位,则使用;您可以解压缩 Contents/Resources/lib/pythonX.X/site-packages.zip 以查看应用程序中包含的内容。

此外,我相信include包括额外的 python 模块,这些模块没有自动包含packages在该位置中的所有内容,而不仅仅是 python 位 - 所以这些位置中的任何和所有文件和文件类型。(我找不到链接或任何东西来确认这一点,但根据我的经验,这是我所理解的)。

于 2012-06-18T11:06:41.627 回答
1

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

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

根据http://www.network-theory.co.uk/docs/pytut/Packages.html ,包是“带点的模块名称” (在本主题中找到参考:Python 模块和 Python 包有什么区别?)。

于 2014-12-18T10:08:44.580 回答