我正在尝试使用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",
我不是编码员,所以我真的不明白这里发生了什么。我何时应该使用“包含”,何时应该使用“包裹”?
答案 0 :(得分:4)
您不需要明确指定您在include
字段中导入的所有内容。 py2app有一个依赖性walker,可以告诉你已经使用过的东西并自动将它捆绑在一起。它并不总是适用于每个模块,因此include
和exclude
可用于微调过程。如果py2app捆绑在一些你不能使用的额外位中,则使用exclude
;你可以解压缩Contents / Resources / lib / pythonX.X / site-packages.zip来查看应用程序中包含的内容。
另外我相信include
用于包含额外的python模块,这些模块并没有自动包含在packages
将包含该位置的所有内容,而不仅仅是python位 - 所以任何和所有文件和这些位置的文件类型。 (我无法找到一个链接或任何东西来证实这一点,但根据我的经验,这是我所理解的。)
答案 1 :(得分:0)
它们应该分别用于模块和包,它在py2app
选项参考中说明了:
https://pythonhosted.org/py2app/options.html
包裹是"点缀模块名称"根据{{3}}(本主题中的参考:http://www.network-theory.co.uk/docs/pytut/Packages.html)。