在翻译之前,译者已根据原文成功创建了一个应用(Mac OS X 10.11.1, Python3.5),如读者在操作中遇到问题,可在本文下方留言,共同探讨。
源码下载:SandwichAPP
本教程中,我们将会使用 Python2 或 Python3 的Tkinter接口,结合py2app创建一个独立的 OSX 应用。
“py2app 是一个让你可以通过 Python 脚本创建独立应用包或插件的 Python 安装包命令。py2app 的设计与目的与 Windows 的 py2exe相似。”
与 py2app 相关的链接:
- 文档
- BitBucket 上的源码(最后提交时间:2015-05-05)
- 问题跟踪,邮件列表
本指南没有严格基于官方教程。我们基于一个 Sandwich.py
的 Python 文件创建了一个名为 Sandwich.app
的应用。
前提
创建一个普通文件夹,并创建一个virtualenv环境:
1 2 3 4 5 6 7 |
# Create a custom directory $ mkdir SandwichApp $ cd SandwichApp # Use virtualenv to create an isolated environment $ virtualenv venv $ . venv/bin/activate |
现在,创建一个简单的Tkinter应用,并其命名为 Sandwich.py
:
1 2 |
import sys if sys.version_info |
这个小应用是这个样子:
安装 py2app
原版的 py2app 由于 ModuleGraph 更新了版本产生了一个 bug。我 fork 了该工程,解决了 bug,然后放到了 Github。使用 pip 安装 py2app:
1 |
$ pip install -U git+https://github.com/metachris/py2app.git@master |
创建 setup.py
文件
py2app 包含了 py2applet
工具, 此工具可以帮你创建 setup.py 文件:
1 2 |
$ py2applet --make-setup Sandwich.py Wrote setup.py |
setup.py
文件是对应用的基本定义:
1 2 3 4 5 6 7 8 9 10 11 12 |
from setuptools import setup APP = ['Sandwich.py'] DATA_FILES = [] OPTIONS = {'argv_emulation': True} setup( app=APP, data_files=DATA_FILES, options={'py2app': OPTIONS}, setup_requires=['py2app'], ) |
如果你的应用使用的其他文件,比如 JSON 文件,文本文件,图片等,你应该将他们包含在 DATA_FILES
中。 例如:
1 |
DATA_FILES = ['testdata.json', 'picture.png'] |
创建开发版和测试版的应用
py2app 基于在 setup.py
文件的定义创建独立应用。
为了方法测试和开发,py2app 提供了“别名模式”,该模式通过与开发文件象征性的链接构建应用。
1 |
$ python setup.py py2app -A |
此命令创建了如下文件和文件夹:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 և下方留言,共同探讨。
源码下载:SandwichAPP 本教程中,我们将会使用 Python2 或 Python3 的Tkinter接口,结合py2app创建一个独立的 OSX 应用。
与 py2app 相关的链接:
本指南没有严格基于官方教程。我们基于一个 app_finder.png
前提创建一个普通文件夹,并创建一个virtualenv环境:
现在,创建一个简单的Tkinter应用,并其命名为
这个小应用是这个样子: app_screen.png
安装 py2app原版的 py2app 由于 ModuleGraph 更新了版本产生了一个 bug。我 fork 了该工程,解决了 bug,然后放到了 Github。使用 pip 安装 py2app:
创建
|
1 2 |
$ py2applet --make-setup Sandwich.py Wrote setup.py |
setup.py
文件是对应用的基本定义:
1 2 3 4 5 6 7 8 9 10 11 12 |
from setuptools import setup APP = ['Sandwich.py'] DATA_FILES = [] OPTIONS = {'argv_emulation': True} setup( app=APP, data_files=DATA_FILES, options={'py2app': OPTIONS}, setup_requires=['py2app'], ) |
如果你的应用使用的其他文件,比如 JSON 文件,文本文件,图片等,你应该将他们包含在 DATA_FILES
中。 例如:
1 |
DATA_FILES = ['testdata.json', 'picture.png'] |
创建开发版和测试版的应用
py2app 基于在 setup.py
文件的定义创建独立应用。
为了方法测试和开发,py2app 提供了“别名模式”,该模式通过与开发文件象征性的链接构建应用。
1 |
$ python setup.py py2app -A |
此命令创建了如下文件和文件夹:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 -button-icon">
|