2012-06-17 2 views
4

Я пытаюсь упаковать Linux-программу для Mac OS X с помощью py2app. Моя setup.py выглядит следующим образом:py2app- В чем разница между переменными «includes» и «packages»?

"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

Вам не нужно явно указывать все, что вы импортировали в поле include. py2app имеет зависимый ходок, который сможет рассказать, что вы использовали, и связать его автоматически. Он не всегда работает для каждого модуля, поэтому include и exclude предназначены для точной настройки процесса. exclude используется, если пакеты py2app в некоторых дополнительных битах вы не используете; вы можете разархивировать содержимое/Ресурсы/lib/pythonX.X/site-packages.zip, чтобы узнать, что включено в приложение.

Также я считаю, include используется для включения дополнительных модулей питона, которые не получают автоматически включены, где, как packages будет включать в себя все, что в этом месте, а не только Python bits- так что любые и все файлы и типы файлов в этих местах. (Я не могу найти ссылку или что-то еще, чтобы подтвердить это, но из моего опыта это то, что я понимаю).

+0

Добавление нашего пакета в 'packages' не включало текстовые файлы, по-видимому, он не включает в себя все типы файлов. –

+0

@ MichielKauw-A-Tjoe Я думаю, что вы хотите 'datafiles' для включения других типов файлов, изображений/текстовых файлов и т. Д. – GP89

+0

Аргумент' data_files' (с подчеркиванием) добавляет файлы, но не добавляет файлы, отличные от Python, внутри пакет или скопировать весь путь, по которому находятся файлы, что мне нужно. Вместо этого папка, в которой он указывает, копируется в «Ресурсы» рядом с 'lib', где хранятся пакеты. Спасибо, в любом случае! –

0

Они должны использоваться для модулей и пакетов соответственно, он говорит так в py2app варианты ссылки:

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

Где пакеты «пунктирные имена модулей» по http://www.network-theory.co.uk/docs/pytut/Packages.html (ссылка найдено в этой теме: What's the difference between a Python module and a Python package?).