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

私はコーダーではないので、ここで何が起こっているのかよくわかりません。「インクルード」と「パッケージ」はいつ使用する必要がありますか?

4

2 に答える 2

6

includeフィールドにインポートしたものすべてに明示的に名前を付ける必要はありません。py2app には依存関係ウォーカーがあり、使用したものを認識して自動的にバンドルすることができます。すべてのモジュールで常に機能するとは限らないため、プロセスを微調整するためにincludeとがあります。使用しない余分なビットに py2app がバンドルされている場合に使用されます。Contents/Resources/lib/pythonX.X/site-packages.zip を解凍して、アプリに何が含まれているかを確認できます。excludeexclude

また、Pythonビットだけでなく、その場所にすべてを含めるincludeように、自動的に含まれなかった追加のpythonモジュールを含めることも考えていpackagesます。そのため、それらの場所にあるすべてのファイルとファイルタイプ。(これを確認するためのリンクや何かが見つかりませんが、私の経験から、これは私が理解していることです)。

于 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 に答える