py2app 0.28.9
pip install py2app
Released:
Create standalone Mac OS X applications with Python
Navigation
Verified details
These details have beenverified by PyPIMaintainers
Meta
- Author:Ronald Oussoren
- Maintainer:Ronald Oussoren
Unverified details
These details havenot been verified by PyPIProject links
Meta
- License: MIT License (MIT or PSF License)
- Author: Ronald Oussoren
- Maintainer: Ronald Oussoren
- Tags .app, standalone
Classifiers
- Development Status
- Environment
- Intended Audience
- License
- Natural Language
- Operating System
- Programming Language
- Topic
Project description
py2app is a Python setuptools command which will allowyou to make standalone Mac OS X application bundlesand plugins from Python scripts.
py2app is similar in purpose and design to py2exe forWindows.
NOTE: py2app must be used on macOS to build applications,it cannot create Mac applications on other platforms.
Project links
Release history
py2app 0.28.9
Warning
py2app won’t work with editable installs.
Add support for python 3.14
py2app does not support free-threaded python
It is no longer possible to use aninstall_requiresoption when invoking py2app.
Support for this was inherited from setuptools, andthat feature has been deprecated for a long time atthis point.
Don’t usepkg_resources
The codebase still falls back to usingpkg_resourcesfor ancient versions of Python, but should no longeruse this library for versions that are stillin support.
py2app 0.28.8
#525: Fix breakage with setuptools 70.
Add support for python 3.13
py2app 0.28.7
Introduce support for Python 3.12
py2app 0.28.6
Fix support for Python 2.7
These are best-effort changes, I no longer have a setup where Ican perform a good test run for Python 2.7.
py2app 0.28.5
#476: Update black recipe
The black recipe no longer worked with recent versions of blackdue to relying on a metadata file from the “egg” spec that’s notincluded by black’s current build tool.
The recipe now scans the python code that’s next to the mypyccompiled extension modules for dependencies and uses that to updatethe dependency graph. This should ensure that new dependencies ofblack will be automaticly detected in the future.
Update wheel dependencies
py2app 0.28.4
Fix incompatibility with Python 3.11
py2app 0.28.3
#453: Fix crash in py2applet when specifying a directory toinclude in the application bundle.
py2app 0.28.2
Fix incompatibility with recent setuptools
py2app 0.28.1
#448: Fix typo in qt6 recipe
#444: Fix issue where the standard output and standard error streamsare set to non-blocking when using py2app.
For some reason the “ibtool” command (part of Xcode) sets these streamsto non-blocking when compiling NIB files. I’ve added a context manager thatresets the non-blocking status of these streams.
PR #446: Fix Qt5 recipe for newer versions of PyQt5
PR by kangi.
#447: Fix error when usingpy2applet--help
Bug was introduced in the fix for #414
py2app 0.28
Note
This is the last version of py2app with compatibility withPython 2.7. Future versions will require Python 3.6 or later.
PR #410: Fix typo in NamedTemporyFile call
PR by MAKOMO
#414 Workaround for autodiscovery in setuptools 61.0
Setuptools 61.0 introduces autodiscovery of distributionattributes, and that broke py2app. This version introducesasetuptools.finalize_distribution_options entrypointin py2app that will set the distributions’sname andpy_modules attributes in a way that is compatible withthe main code of py2app when they are not yet set (beforeautodiscovery kicks in).
In older versions of py2app buildin an app can fail in twoways with setuptools 61.0 or later:
The name of the generated application is not based onthe script name, but some other value.
Callingpython setup.py py2app results in an errormentioningMultipletop-level modules discovered.
PR #418: Add recipe for black
PR by mrclary
#417: Also include package dist-info for editable installs
The qt5 and qt6 recipes used dodge logic to detectif the Qt library itself is inside the python package,resulting in duplicate copies of Qt.
#406: Fix incompatibility with python 2.7
py2app 0.24 accidently broke compatibility with Python 2.7, andthis release fixes this.
This is the last release with Python 2.7 support, the nextrelease will contain package metadata that ensures it canonly be installed on Python 3.
#413: Find dist-info in included pythonXX.zip
By default theworking_set of pkg_resources does not containdistribution information from packages included in zip files, suchas the zipped-up stdlib + site-pakckages in py2app bundles.
Add some monkey patching to apps usingpkg_resources to fix this.
Fix hard crash in “rtree” recipe when the package contents doesn’tmatch the recipe expectations.
#408: Add definition ofsite.PREFIXES
#412: Fix incompatibility with setuptools 60.8.1
The setuptools recipe did not recoginize all vendored dependenciesinpkg_resources and that breaks app bundles that usepkg_resoures.
PR #388: Add builtin definitions for ‘quit’ and ‘exit’ in site.py
PR by mcclary
PR #388: Set “ENABLE_USER_SITE=False” in site.py
PR by mcclary
PR #396: Update pygame recipe to remove missing icon
PR by glyph
py2app 0.27
#377: The qt5 and qt6 recipes caused a py2app crash whenthe PyQt5 or PyQt6 is not installed.
#401: Fix incompatibility with setuptools 60.7 and later
#391: Drop usage of tempfile.mktemp
#387: Addsite.ENABLE_USER_SITE in the site.py filefor applications (value is alwaysFalse).
py2app 0.26.1
#374: Actually ship the “old” stub executables introduced in version 0.26
py2app 0.26
Stub executables were recompiled on macOS 11
This means support for light mode/dark mode should now work out of thebox.
The old stub executables are still used when detecting that Tkinteris used with an old build of Tk.
#1: Include “.egg-info” and “.dist-info” information in the bundled application
This fixes any python package that usespkg_resources to look forspecific distributions.
py2app.filters.not_stdlib_filter now knows about Python’s “venv”
#368: Add recipe “detect_dunder_file”
This recipe will ensure that a Python package is stored outsideof site-packages.zip when a module in that package uses the__file__ variable.
This variable is most commonly used to load resources stored inthe package (instead of the newerimportlib.resources andpkg_resourceslibraries).
#339: Add recipe for pydantic
The recipe is needed because pydantic uses Cython to compileall sources (including the package__init__) and thereforehides imports from the dependency analyzer.
#338: Add “imageio_ffmpeg” to autopackages
PR367: Add recipes for pandas, pylsp, and zmq
PR367: Add docutils and pylint to autopackages
PR by Ryan Clary (mrclary on GitHub)
#344: Invocation of codesign on the whole bundle sometimes fails
Py2app will now try this a number of times before giving up. Thisis at best a workaround for and doesn’t completely fix the problem.
#370: py2app now works with Python 3.10
Python 3.10 no longer exports a (private) symbol used by the py2appstub executable. Switched to a public API to accomplish the same task whereavailable.
#110: Add recipe for SQLAlchemy
The recipe includes all dialects and connectors, including implicitdependencies, because SQLAlchemy uses__import__ to load dependencies.
#328: Add recipe for gcloud
#195: AddUSER_BASE,getuserbase() andgetusersitepackages() topy2app’s version ofsite.py.
#184: Add recipe for ‘ssl’
This recipe is only used for Python 3.4 or later and ensures that theCA bundle used by Python’s ssl module is included in the app bundle and OpenSSLis configured to look for that bundle in the application bundle.
#371: change default error message on launch problems
The default error message shown when the application cannot be launched is nowslightly more useful and refers thepy2app debug page.
#345, #169: Adjust qt5 and qt6 recipes for non-PyPI installations
The qt5 and qt6 recipes now should work when the Qt installation prefixis outside of the PyQt package, for example when PyQt was installed throughhomebrew.
I’ve tested this for PyQt5 and made the same change to the PyQt6 recipe, althoughI haven’t tested that change.
py2app 0.25
#358: Add recipe for multiprocessing
PR363: Add recipe for platformdirs
PR by Ryan Clary (mrclary on GitHub)
PR353: Add recipe for sphinx
PR by Ryan Clary (mrclary on GitHub)
PR352: Fix for using ipython
PR by Ryan Clary (mrclary on GitHub)
PR351: Tweak the matplotlib recipe
PR by Ryan Clary (mrclary on GitHub)
PR348: Fix for checking for dead symlinks links in py2app
PR by Oliver Cordes (ocordes on GitHub)
#354: Fix buggy “autopackages” and “automissing” recipes
#350: Add sentencepiece to the autopackages list
#359: Add recipe for PyQt6
#349: Add recipe for OpenCV (opencv-python,import cv2)
PR365: Add RTree recipe
PR by Ryan Clary (mrclary on GitHub)
py2app 0.24
Consolidate recipes that just include a packageas is into a single recipe to reduce code complexity.
Consolidate recipes that just mark imports as expectedmissing into a single recipe to reduce code complexity.
#334: Include binary stubs for Universal 2 and arm64 binaries in the archives
The files were in the repository, but were excluded from the sourceand wheel archives.
py2app 0.23
#315: Stub executables have an LC_RPATH that points to the Frameworks folder
PR by Aleksandar Topuzović (atopuzov)
#322: Port wxPython examples to 4.0
PR by Hamish Mcintyre-Bhatty (hamishmb)
#314: Don’t use Image.DEBUG in the PIL recipy, that attribute is not longer valid
PR by Aleksandar Topuzović
#320: Process “@loader_path” in load commands
A popular pattern in C extensions with bindins to C library on PyPI is tocopy those C libraries into the wheel and reference those usingan “@loader_path” linker command in the C extension. Until this releasepy2app could not process those linker commands correctly.
#298: Add recipe for pycryptodome
#282: Add recipe for h5py
#283: Add recipe for tensorflow
The recipe just includes the entire package into the generated app bundle,I haven’t checked yet if there is a way to reduce the size of thispackage (which is rather huge).
py2app 0.22
#319: Add ad-hoc signature for application bundles
ARM64 binaries on macOS 11 must be signed, even if it is only an ad-hoc signature.py2app will now add an ad-hoc code signature.
#300: Add support for ARM64 and Universal 2 binaries
Note
Support is highly experimental, these stubs have not been tested yet.
#299: Fix build error when building with the copy of Python 3 shippedwith Xcode.
#281: Generated bundle doesn’t work on macOS 10.9 and 10.10.
py2app 0.21
PR 277 (Christian Clauss): Fix some Python 3 issues
#276: Rebuilt the binary stubs on a 10.12 machine to fix launching
py2app 0.20
Migrate to GitHub
#274: Fix an issue in the PyQt5 recipe
Fix issue with emulate-shell-environment option on macOS 10.15 (Catalina)
#269: Py2app didn’t work with Python 3.8
py2app 0.19
#251: Add recipe for “botocore”
#253: “python setup.py py2app -A” creates invalid bundle from “venv” virtual environments
Updated recipe for PySide2 and new recipe for Shiboken2
Patch by Alberto Sottile.
py2app 0.18
#250: Add recipe for “six.moves”, which also works when the sixlibrary is vendored by other packages
py2app 0.17
#247: The new tkinter recipe didn’t work properly for installationsthat do use a framework install of Tcl/Tk.
py2app 0.16
#244: Copy the Tcl/Tk support libraries into the application bundle forPython builds using a classic unix install of Tcl/Tk instead of a frameworkbuild.
This results in working app bundles when a Python.org installation thatincludes Tcl/Tk (such as Python 3.7).
Don’t copy numpy into application just because the application usesPillow.
Add recipe for Pyside
Patch by Alberto Sottile
py2app 0.15
Fixed issues for Python 3.7, in particular changes in the plistlib library(Issue #242, #239)
Updated dependencies on macholib, altgraph and modulegraph
Due to a bug in CPython 3.7.0 using -O does not work with that version of CPython
py2app 0.14.1
Updated dependencies
Updated PyPI metadata
py2app 0.14
Features:
Started using flake8 to improve coding style
Bug fixes:
Issue #222: The fix for issue #179 broke the argv emulator
Issue #226: Py2app could fail while reporting on possibly missing modules
Issue #228: The python executable included in the app bundle assys.exectuable was not executable
py2app 0.13
Bug fixes:
Issue 185 in PyObjC’s tracker: sysconfig using__import__ in Python 3.6 orlater, which confuses modulegraph.
Pull request #17: Location of site-packages in the “–user” location has changed
Patch by Matt Mukerjee
Features:
(None yet)
py2app 0.12
Pull request #15 by Armin Samii: Safer symlink and file copying
Update recipes: a number of recipe names conflicted with toplevelmodules imported by recipes. This causes problems on Python 2.7 (withoutabsolute imports)
py2app 0.11
Make sure the stdout/stderr streams of the main binary of the applicationare unbuffered.
Seeissue #177 in PyObjC’s repository for more information.
Fix issue #201: py2app is not compatible with pyvenv virtualenvs
With additional fix by Oskari Timperi.
Fix issue #179: the stdout/stderr streams are no longer forwarded to console.app using ASL (by default),use “–redirect-stdout-to-asl” to enable the redirection functionality.
Note that for unclear reasons the redirection doesn’t work on OSX 10.12 at the moment.
Fix issue #188: Troubles with lxml.isoschematron
The package ‘lxml.isoschematron’ is not zip-safe and tries to load resources using the normalfilesystem APIs, which doesn’t work when the package is part of a zipfile.
py2applet now longer uses “argv_emulation” by default, that results in too many problems.
Issue #174: clean up the summary about missing modules by removing warnings about things that aren’t modules.
Also notes when an module is likely an alias for some other module. These changes should remove a lotof false postive warnings from the output of py2app.
Fix issue #161: opengl recipe uses “file” function that isn’t present on Python 3
Add “qt5” recipe that does the right thing for the PyQt5 wheel on PyPI (tested with PyQt5 5.6)
Add support for “@loader_path” in the link commands of C extension.
This makes it possible to use wheels that were processed bydelocate-listdepswhen building application bundles.
Do not report imports that are expected to be missing
Patch by Barry Scott.
py2app 0.10
The recipe for virtualenv calls a modulegraph method that was madeprivate in a recent release and hence no longer worked with py2app 0.9.
Update the recipe to work around this.
py2app 0.9
issue #146, #147: The “python” binary in MyApp.app/Contents/MacOS wasthe small stub exetable from framework builds, instead of the actualcommand-line interpreter. The result is that you couldn’t usesys.executable to start a new interpreter, which (amongst others)breaks multiprocessing.
pull request #7: Add support for PyQt5 to the sip recipe. Patch byMark Montague.
pull request #4: Copying PySide plugins was broken due to badindentation.
pull request #5: py2app was broken for python versions thatdon’t use _sysconfigdata.
issue #135: Don’t sleep for a second after compiling a XIB file
issue #134: Remove target location before copying files intothe bundle.
issue #133: Ensure that the application’s “Framework” folderis on the search path forctypes.util.find_library.
issue #132: Depend on modulegraph 0.12 to avoid build errorswhen the python code contains references to compatibility modulesthat contain SyntaxErrors for the current python version.
Explicitly report modules that cannot be found at the end ofthe run (for non-alias builds)
Note: This is just a warning, missing modules are not necessarilya problem because modulegraph can detect imports for modules thataren’t used on OSX (for example)
Report modules that contain syntax errors at the end ofthe run (for non-alias builds)
Note: This is just a warning, syntax errors be valid when thedependency tree contains modules for the other major releaseof python (e.g a compat_py2 module that contains compatibilitycode for Python 2 and contains code that isn’t valid Python 3)
py2app 0.8.1
Loading scripts didn’t work when –no-chdir was used
Reported by Barry Scott in private mail.
py2app 0.8
py2app 0.8 is a feature release
Fixed argv emulator on OSX 10.9, the way the code detected that the applicationwas launched through the Finder didn’t work on that OSX release.
The launcher binary is now linked with Cocoa, that should avoid some problemswith sandboxed applications (in particular: standard open panels don’t seemto work properly in a sandboxed application when the main binary is notlinked to AppKit)
Don’t copy Python’s Makefile, Setup file and the like into a bundle whensysconfig and distutils.sysconfig don’t need these files (basicly, whenusing any recent python version).
Fix some issues with virtualenv support:
detection of system installs of Python didn’t work properly when usinga virtualenv. Because of this py2app did not create a “semi-standalone”bundle when using a virtualenv created with /usr/bin/python.
“semi-standalone” bundles created from a virtualenv included more fileswhen they should (in particular bits of the stdlib)
Issue #92: Add option ‘–force-system-tk’ which ensures that the _tkinterextension (used by Tkinter) is linked against the Apple build of Tcl/Tk,even when it is linked to another framework in Python’s std. library.
This will cause a build error when tkinter is linked with a major version ofTcl/Tk that is not present in /System/Library/Frameworks.
Issue #80: Add support for copying system plugins into the applicationbundle.
Py2app now supports a new optioninclude_plugins. The value of thisis a list of paths to plugins that should be copied into the applicationbundle.
Items in the list are either paths, or a tuple with the plugin typeand the path:
include_plugins=[ "MyPlugins/MyDocument.qlgenerator", ("SystemConfiguration", "MyPlugins/MyConfig.plugin"),]Py2app currently knows about the following plugin suffixes:.qlgenerator,.mdimporter,.xpc,.service,.prefPane,.iaplugin and.action. These pluginscan be added without specifying the plugin type.
Issue #83: Setup.py now refuses to install when the currentplatform is not Mac OS X.
This makes it clear that the package is only supported on OSX andavoids confusing errors later on.
Issue #39: It is now possible to have subpackages onin the “packages” option of py2app.
Issue #37: Add recipe for pyEnchant
..note:
The recipe only works for installations of pyEnchantwhere pyEnchant is stored in the installation (suchas the binary eggs on PyPI), not for installationsthat either use the "PYENCHANT_LIBRARY_PATH" environmentvariable or MacPorts.
Issue #90: Removed the ‘email’ recipe, but require a new enough versionof modulegraph instead. Because of this py2app now requires modulegraph0.11 or later.
py2app 0.7.4
Issue #77: the stdout/stderr streams of application and plugin bundles did notend up in Console.app on OSX 10.8 (as they do on earlier releases of OSX). Thisis due to a change in OSX.
With this version the application executable converts writes to the stdoutand stderr streams to the ASL logging subsystem with the options needed toend up in the default view of Console.app.
NOTE: The stdout and stderr streams of plugin bundles are not redirected, as itis rather bad form to change the global environment of the host application.
The i386, x86_64 and intel stub binaries are now compiled with clang on OSX 10.8,instead of an older version of GCC. The other stub versions still are compiledon OSX 10.6.
Issue #111: The site.py generated by py2app now contains a USER_SITE variable(with a default value ofNone) because some software tries to import thevalue.
Py2app didn’t preserve timestamps for files copied into application bundles,and this can cause a bytecompiled file to appear older than the correspondingsource file (for packages copied in the bundle using the ‘packages’ option).
Related to issue #101
Py2app also didn’t copy file permissions for files copied into applicationbundles, which isn’t a problem in general but did cause binaries to losethere executable permissions (as noted on Stackoverflow)
Issue #101: Set “PYTHONDONTWRITEBYTECODE” in the environment beforecalling Py_Initialize to ensure that the interpreter won’t try towrite bytecode files (which can cause problems when using sandboxedapplications).
Issue #105: py2app can now create app and plugin bundles when the main scripthas an encoding other than ASCII, in particular for Python 3.
Issue #106: Ensure that the PIL recipe works on Python 3. PIL itself isn’tported yet, but Pillow does work with Python 3.
“python setup.py install” now fails unless the machine is running Mac OS X.
I’ve seen a number of reports of users that try to use py2app on Windowsor Linux to build OSX applications. That doesn’t work, py2app now failsduring installation do make this clear.
Disabled the ‘email’ recipe for python 3.x as it isn’t needed there.
Issue #91: Added a recipe forlxml <http://lxml.de/>, needed becauselxml performs a number of imports from an extension and those cannotbe detected automaticly by modulegraph.
Issue #94: The site-packages zipfile in the application bundle now containszipfile entries for directories as well. This is needed to work arounda bug in the zipimporter for Python 3.3: it won’t consider ‘pkg/foo.py’ to bein namespace package ‘pkg’ unless there is a zipfile entry for the ‘pkg’folder (or there is a ‘pkg/__init__.py’ entry).
Issue #97: Fixes a problem with the pyside and sip recipes when the ‘qt_plugins’option is used for ‘image_plugins’.
Issue #96: py2app should work with python 2.6 again (previous releases didn’twork due to using the sysconfig module introduced in python 2.7)
Issue #99: appstore requires a number of symlinks in embedded frameworks.
(Version 0.7 already added a link Python.frameworks/Versions/Current, thisversions also adds Python.framework/Python and Python.framework/Resources withthe value required by the appstore upload tool).
Py2app copied stdlib packages into the app bundle for semi-standalone buildswhen they are mentioned in the ‘–packages’ option (either explicitly orby a recipe). This was unintentional, semi-standlone builds should rely onthe external Python framework for the stdlib.
Note
Because of this bug parts of the stdlib of/usr/bin/python could becopied into app bundles created with py2app.
py2app 0.7.3
py2app 0.7.3 is a bugfix release
Issue #82: Remove debug print statement from py2app.util.LOADER thatcaused problems with Python 3.
Issue #81: Py2app now fails with an error when trying to build a bundlefor a unix-style shared library build of Python (--enable-shared) unlessyou are using a recent enough patchlevel of python (2.7.4, 3.2.3, 3.3.1,3.4.0, all of them are not released yet).
The build failure was added to avoid a very confusing error when tryingto start the generated application due to a bug in the way python readsthe environment (for shared library builds on Mac OS X).
Py2app will also give an error message when the python binary does nothave a shared library (or framework) at all.
Issue #87: Ignore ‘.git’ and ‘.hg’ directories while copying package data(‘.svn’ and ‘CVS’ were already ignored).
Issue #65: the fix in 0.7 to avoid copying a symlinked library twice causedproblems for some users because only one of the file names ended up in theapplication bundle. This release ensures that both names exist (one as asymbolic name to the other).
Issue #88: Ensure that the fix for #65 won’t try to create a symlink thatpoints to itself. This could for example occur with homebrew, where theexposed lib directory contains symlinks to a cellar, while tye install_namedoes mention the “public” lib directory:
$ ls -l /opt/homebrew/lib...libglib-2.0.0.dylib -> ../Cellar/glib/2.32.4/lib/libglib-2.0.0.dylib...$ otool -vL /opt/homebrew/lib/libglib-2.0.0.dylib/opt/homebrew/lib/libglib-2.0.0.dylib: /opt/homebrew/lib/libglib-2.0.0.dylib (compatibility version 3201.0.0, current version 3201.4.0) time stamp 1 Thu Jan 1 01:00:01 1970...
py2app 0.7.2
py2app 0.7.2 is a bugfix release
Issue #75: Don’t remove--dist-dir, but only remove the old versionof the objects we’re trying to build (if that exists).
This once again makes it possible to have a number of setup.py files thatbuild plugins into the same target folder (such as the plugins folderof an application)
Issue #78: Packages added using the--packages option didn’t end uponsys.path for semi-standalone applications.
Reported by Steve Strassmann
Issue #76: Semi-standalone packages using extensions modules coudn’t useextensions unless they also used the--site-packages option (andthe extensions are in the site-packages directory).
Fixes some problems with PyQt and wxWidgets when using the system installationof Python.
Patch by Dan Horner.
It is currently not possible to use a subpackage (“foo.bar”) in the listof packages for the “packages” option. Py2app now explicitly checks for thisand prints an error message instead of building an application that doesn’twork.
Issue: #39
py2app 0.7.1
py2app 0.7.1 is a bugfix release
Always include ‘pkg_resources’, this is needed to correctly work withsetuptools namespace packages, the __init__.py files of those contain__import__('pkg_resources') and that call isn’t recognized as an importby the bytecode scanner.
Issue #67: py2applet didn’t work with python 3 due to the use of ‘raw_input’
Reported by Andrew Barnert.
Issue #68: the “extra-scripts” feature introduced in 0.7 couldn’t copy scriptsthat aren’t in the same directory as “setup.py”.
Reported by Andrew Barnert.
For semi-standalone applications the “lib-dynload” directory inside theapplication was not on “sys.path”, which resulted in launch failureswhen using an extension that is not in the stdlib.
Issue #70: application fails to launch when script uses Windows line endings
Reported by Luc Jean.
py2app 0.7
py2app 0.7 is a bugfix release
Issue #65: generated bundle would crash when two libraries linked to thesame library using different names (one refering to the real name, the otherto a symlink).
An example if this is an application using wxWidgets when wxWidgets is installedusing homebrew.
Reported by “Bouke”.
Issue #13: It is now possible to add helper scripts to a bundle, forexample for creating a GUI that starts a helper script in the background.
This can be done by using the option “–extra-scripts”, the value of which is a listof script files (“.py” or “.pyw” files).
Smarter matplotlib recipe, it is now possible to specify which backends shouldbe included. Issue #44, reported by Adam Kovics.
The argument to--matplotlib-backends (or ‘matplotlib_backends’ in setup.py)is a list of plugins to include. Use ‘-’ to not include backends other than thosefound by the import statement analysis, and ‘*’ to include all backends (withoutnecessarily including all of matplotlib)
As an example, use--matplotlib-backends=wxagg to include just the wxaggbackend.
Default is to include the entire matplotlib package.
The packages included by a py2app recipe weren’t processed by modulegraph andhence their dependencies were not always included.
Fix virtualenv support: alias builds in a virtual environment failed to work.
(There are still issues with semi-standalone and alias plugin bundles ina virtualenv environment).
issue #18: improved PyQt and PySide support.
Py2app now has a new option named “–qt-plugins” (or “qt_plugins” in setup.py),this option specify a list of plugins that should be included in theapplication bundle. The items of the list can have a number of forms:
“plugintype/libplugin.dylib”
Specify one particular plugin
“plugintype/*foo*”
Specify one or more plugins using a glob pattern
“plugintype”
Include all plugins of a type, equivalent to “plugintype/*”.
The plugins are copied into “Resources/qt_plugins” and py2app adds a “qt.conf”file that points to that location for plugins.
issue #49: package data that is a zipfile is now correctly copied intothe bundle instead of extracting the archive.
issue #59: compile site.py to ensure that the generated bundle doesn’tchange on first run.
This is nice to have in general, and essential when using code signingbecause the signature will break when a new file is added after signing.
Reported by Michael McCracken.
issue #60: recipe for “email” package was not loaded
Reported by Chris Beaumont
issue #46: py2app no longer warns about the Qt license. We don’t warn aboutother possibly GPL licensed software either and py2app is nota license-enforcement tool.
Reported by briank_in_la.
Generated bundles always started with python optimization active(that is, as if running as ‘python -O’).
Fix issue #53: py2app would crash if a data file happened tobe a zipfile.
py2app copies data files in the directory for a package intothe application bundle. It also did this for directories thatrepresent subpackages, which made it impossible to excludesubpackages.
added recipe for wxPython because some subpackages of wxPythonuse__path__ trickery that confuses modulegraph.
recipes can now return a list of additional entries for the‘includes’ list.
rewritten the recipe for matplotlib. The recipe no longer includesthe entire package, but just the “mpl-data” directory.
WARNING: This recipe has had limited testing.
fix mixed indentation (tabs and spaces) in argv_emulation.py,which caused installation failures on python 3.x (issue #40)
Issue #43: py2app now creates a symlink named “Current” in the‘Versions’ directory of the embedded Python framework to complywith a requirement for the Mac App-store.
on some OSX releases the application receives both the“open application” and “open documents” Apple Events during startup,which broke an assumption in argv_emulation.py.
py2app is more strict w.r.t. explictly closing files, this avoidsResourceWarnings for unclosed files.
fix test issue with semi-standalone builds on Python 3.2
added recipe for pyzmq
Don’t use the version information from Python.framework’s Info.plist,but usesys.version_info. This fixes a build problem with EPD.
Ignore some more files when copying package data:
VIM swap files (.foo.py.swp)
Backup files for a number of tools:foo.orig andfoo~
py2app 0.6.4
py2app 0.6.4 is a bugfix and minor feature release
Issue #28: the argv emulator crashes in 64-bit mode on OSX 10.5
Fixing this issue required yet another rewrite of the argv_emulatorcode.
Added option ‘–arch=VALUE’ which can be used to select the set ofarchitectures for the main executable. This defaults to the set ofarchitectures supported by the python interpreter and can be used todrop support for some architectures (for example when you’re using apython binary that supports both 32-bit and 64-bit code and use aGUI library that does not yet work in 64-bit mode).
Valid values for the argument are archectures used in the list belowand the following groups of architectures:
fat: i386, ppc
fat3: i386, x86_64, ppc
univeral: i386, x86_64, ppc, ppc64
intel: i386, x86_64
Issue #32: fix crash when application uses PySide
This is partially fixed in macholib (release 1.4.3)
The ‘-O’ flag of py2app now defaults to the python optimization levelwhen using python 2.6 or later.
Issue #31: honor optimze flag at runtime.
Until now an application bundle created by py2app would also run withoutthe “-O” flag, even when the user specified it should. This is now fixed.
Issue #33: py2app’s application bundle launcher now clears the environmentvariablePYOBJC_BUNDLE_ADDRESS, avoids a crash when using PyObjC in anapplication launched from a py2app based plugin bundle.
py2app’s bundle launcher set the environment variablePYOBJC_BUNDLE_ADDRESS,this variable is now deprecated. UsePYOBJC_BUNDLE_ADDRESS<PID> instead(replace<PID> by the process ID of the current process).
When using the system python we now explicitly add Apple’s additional packages(like PyObjC and Twisted) tosys.path.
This fixes and issue reported by Sean Robinson: py2app used to create a non-workingbundle when you used these packages because the packages didn’t get included(as intented), but were not available onsys.path either.
Fixed the recipe for sip, which in turn ensures that PyQt4 applicationswork.
As before the SIP recipe is rather crude, it will includeall SIP-basedpackages into your application bundle when it detects a module that usesSIP.
The ‘Resources’ folder is no longer on the python search path,it contains the scripts while Python modules and packages are locatedin the site-packages directory. This change is related to issue #30.
The folder ‘Resources/Python/site-packages’ is no longer on the pythonsearch path. This folder is not used by py2app itself, but might byused by custom build scripts that wrap around py2app.
Issue #30: py2app bundles failed to launch properly when the scriptfilehas the same name as a python package used by the application.
Issue #15: py2app now has an option to emulate the shell environment youget by opening a window in the Terminal.
Usage:python setup.py py2app--emulate-shell-environment
This option is experimental, it is far from certain that the implementationworks on all systems.
Issue #16:--argv-emulation now works with Python 3.x and in 64-bitexecutables.
Issue #17: py2applet script defaults ‘argv_emulation’ to False when your usinga 64-bit build of python, because that option is not supported onsuch builds.
py2app now clears the temporary directory in ‘build’ and the output directoryin ‘dist’ before doing anything. This avoids unwanted interactions betweenresults from a previous builds and the current build.
Issue #22: py2app will give an error when the specified version is invalid,instead of causing a crash in the generated executable.
Issue #23: py2app failed to work when an .egg directory was implictly addedtosys.path by setuptools and the “-O” option was used (for examplepython setup.py py2app-O2)
Issue #26: py2app copied the wrong executable into the application bundlewhen using virtualenv with a framework build of Python.
py2app 0.6.3
py2app 0.6.3 is a bugfix release
py2app failed to compile .xib files(as reported on the pythonmac-sig mail-ing list).
py2app 0.6.2
py2app 0.6.2 is a bugfix release
py2app failed to copy the iconfile into application bundle(reported by Russel Owen)
py2app failed to copy resources and data files as well(theresource key in the py2ap options dictionary andthedata_files argument to the setup function).
Issue #19, reported by bryon(at)spideroak.com.
py2app failed to build application bundles when using virtualenvdue to assumptions about the relation betweensys.prefix andsys.executable.
Report and fix by Erik van Zijst.
Ensure that the ‘examples’ directory is included in the sourcearchive
py2app 0.6.1
py2app 0.6.1 is a bugfix release
Bugfixes:
py2app failed to build the bundle when python package containeda zipfile with data.
This version solves most of that problem using a roughworkaround (the issue is fixed when the filename ends with ‘.zip’).
The code that recreates the stub executables when they areolder than the source code now usesxcode-select tofind the root of SDKs.
This makes it possible to recreate these executables on machineswhere both Xcode 3 and Xcode 4 are installed and Xcode 3 isthe default Xcode.
The stub executables were regenerated using Xcode 3
As a word of warning: Xcode 4 cannot be used to rebuild thestub executables, in particular not those that have supportfor the PPC architecture.
Don’t rebuild the stub executables automaticly, that’sunsafe with Xcode 4 and could trigger accidently whenfiles are installed in a different order than expected.
Small tweaks to the testsuite to ensure that they workon systems with both Xcode3 and Xcode4 (Xcode3 must bethe selected version).
Better cleanup in the testsuite whensetupClass fails.
py2app 0.6
py2app 0.6 is a minor feature release
Features:
it is now possible to specify which python distributions mustbe availble when building the bundle by using the“install_requires” argument of thesetup() function:
setup( ... install_requires = [ "pyobjc == 2.2" ],)
py2app can now package namespace packages that were installedusingpip <http://pypi.python.org/pypi/pip> or thesetuptools install option--single-version-externally-managed.
the bundle template now supports python3, based on a patchby Virgil Dupras.
alias builds no longer use Carbon Aliases and therefore aresupported with python3 as well (patch by Virgil Dupras)
argv emulation doesn’t work in python 3, this releasewill tell you abou this instead of silently failing tobuild a working bundle.
add support for custom URLs to the argv emulation code(patch by Brendan Simon).
You will have to add a “CFBundleURLTypes” key to your Info.plist touse this, the argv emulation code will ensure that the URLto open will end up insys.argv.
py2app.util contains a number of functions that are nowdeprecated an will be removed in a future version, specifically:os_path_islink,os_path_isdir,path_to_zip,get_zip_data,get_mtime, andos_readlink.
The modulepy2app.simpleio no longer exists, and should neverhave been in the repository (it was part of a failed rewrite ofthe I/O layer).
Bug fixes:
fix problem with symlinks in copied framework, as reportedby Dan Ross.
py2applet didn’t work in python 3.x.
The--alias option didn’t work when building a pluginbundle (issue #10, fix by Virgil Dupras)
Avoid copying the __pycache__ directory in python versionsthat implement PEP 3147 (Python 3.2 and later)
App bundles with Python 3 now work when the application isstored in a directory with non-ASCII characters in the fullname.
Do not compile.nib files, it is not strictly needed andbreaks PyObjC projects that still use the NibClassBuilder code.
Better error messsages when trying to include a non-existingfile as a resource.
Don’t drop into PDB when an exception occurs.
Issue #5: Avoid a possible stack overflow in the bundle executable
Issue #9: Work with python 3.2
Fix build issues with python 2.5 (due to usage of too modern distutilscommand subclasses)
The source distribution didn’t include all files that needed to beit ever since switching to mercurial, I’ve added a MANIFEST.infile rather than relying on setuptool’s autoguessing of files to include.
Bundle template works again with semi-standalone builds (such aswhen using a system python), this rewrites the fix for issue #10mentioned earlier.
Ensure py2app works correctly when the sources are located in adirectory with non-ascii characters in its name.
py2app 0.5.2
py2app 0.5.2 is a bugfix release
Bug fixes:
Ensure that the right stub executable gets found when usingthe system python 2.5
py2app 0.5.1
py2app 0.5.1 is a bugfix release
Bug fixes:
Ensure stub executables get included in the egg files
Fix name of the bundletemplate stub executable for 32-bit builds
py2app 0.5
py2app 0.5 is a minor feature release.
Features:
Add support for the--with-framework-name option of Python’sconfigure script, that is: py2app now also works when the Pythonframework is not named ‘Python.framework’.
Add support for various build flavours of Python (32bit, 3-way, …)
py2app now actually works for me (ronaldoussoren@mac.com) with apython interpreter in a virtualenv environment.
Experimental support for python 3
Bug fixes:
Fix recipe for matplotlib: that recipe caused an exception withcurrent versions of matplotlib and pytz.
Use modern API’s in the alias-build bootstrap code, withoutthis ‘py2app -A’ will result in broken bundles on a 64-bit buildof Python.(Patch contributed by James R Eagan)
Try both ‘import Image’ and ‘from PIL import Image’ in the PILrecipe.(Patch contributed by Christopher Barker)
The stub executable now works for 64-bit application bundles
(Lowlevel) The application stub was rewritten to usedlopen instead ofdyld APIs. This removes deprecationwarnings during compilation.
py2app 0.4.3
py2app 0.4.3 is a bugfix release
Bug fixes:
A bad format string in build_app.py made it impossible to copy thePython framework into an app bundle.
py2app 0.4.2
py2app 0.4.2 is a minor feature release
Features:
When the ‘–strip’ option is specified we now also remove ‘.dSYM’directories from the bundle.
Remove dependency on a ‘version.plist’ file in the python framework
A new recipe forPyQt 4.x. This recipe was donated by Kevin Walzer.
A new recipe forvirtualenv, this allows you to use py2app froma virtual environment.
Adds support for converting.xib files (NIB files forInterface Builder 3)
Introduces an experimental plugin API for data converters.
A conversion plugin should be defined as an entry-point in thepy2app.converter group:
setup( ... entry_points = { 'py2app.converter': [ "label = some_module:converter_function", ] }, ...)The conversion function should be defined like this:
from py2app.decorators import converts@converts('.png')def optimze_png(source, proposed_destionation, dryrun=0): # Copy 'source' to 'proposed_destination' # The conversion is allowed to change the proposed # destination to another name in the same directory. pass
Buf fixes:
This fixes an issue with copying a different version of Python overto an app/plugin bundle than the one used to run py2app with.
py2app 0.4.0
py2app 0.4.0 is a minor feature release (and was never formally released).
Features:
Support for CoreData mapping models (introduced in Mac OS X 10.5)
Support for python packages that are stored in zipfiles (such aszip_safepython eggs).
Bug fixes:
Fix incorrect symlink target creation with an alias bundle that has includedframeworks.
Stuffit tends to extract archives recursively, which results in unzippedcode archives inside py2app-created bundles. This version has a workaroundfor this “feature” for Stuffit.
Be more carefull about passing non-constant strings as the template argumentiof string formatting functions (in the app and bundle templates), to avoidcrashes under some conditions.
py2app 0.3.6
py2app 0.3.6 is a minor bugfix release.
Bug fixes:
Ensure that custom icons are copied into the output bundle
Solve compatibility problem with some haxies and inputmanager plugins
py2app 0.3.5
py2app 0.3.5 is a minor bugfix release.
Bug fixes:
Resolve disable_linecache issue
Fix Info.plist and Python path for plugins
py2app 0.3.4
py2app 0.3.4 is a minor bugfix release.
Bug fixes:
Fixed a typo in the py2applet script
Removed some, but not all, compiler warnings from the bundle template(which is still probably broken anyway)
py2app 0.3.3
py2app 0.3.3 is a minor bugfix release.
Bug Fixes:
Fixed a typo in the argv emulation code
Removed the unnecessary py2app.install hack (setuptools does that already)
py2app 0.3.2
py2app 0.3.2 is a major bugfix release.
Functional changes:
Massively updated documentation
New prefer-ppc option
New recipes: numpy, scipy, matplotlib
Updated py2applet script to take options, provide –make-setup
Bug Fixes:
No longer defaults to LSPrefersPPC
Replaced stdlib usage of argvemulator to inline version for i386compatibility
py2app 0.3.1
py2app 0.3.1 is a minor bugfix release.
Functional changes:
New EggInstaller example
Bug Fixes:
Now ensures that the executable is +x (when installed from egg this may notbe the case)
py2app 0.3.0
py2app 0.3.0 is a major feature enhancements release.
Functional changes:
New –xref (-x) option similar to py2exe’s that producesa list of modules and their interdependencies as a HTMLfile
sys.executable now points to a regular Python interpreteralongside the regular executable, so spawning sub-interpretersshould work much more reliably
Application bootstrap now detects paths containing “:”and will provide a “friendly” error message instead of justcrashing <http://python.org/sf/1507224>.
Application bootstrap now sets PYTHONHOME instead ofa large PYTHONPATH
Application bootstrap rewritten in C that links toCoreFoundation and Cocoa dynamically as needed,so it doesn’t imply any particular version of the runtime.
Documentation and examples changed to use setuptoolsinstead of distutils.core, which removes the need forthe py2app import
Refactored to use setuptools, distributed as an egg.
macholib, bdist_mpkg, modulegraph, and altgraph are nowseparately maintained packages available on PyPI as eggs
macholib now supports little endian architectures,64-bit Mach-O headers, and reading/writing ofmultiple headers per file (fat / universal binaries)
py2app 0.2.1
py2app 0.2.1 is a minor bug fix release.
Bug Fixes:
macholib.util.in_system_path understands SDKs now
DYLD_LIBRARY_PATH searching is fixed
Frameworks and excludes options should work again.
py2app 0.2.0
py2app 0.2.0 is a minor bug fix release.
Functional changes:
New datamodels option to support CoreData. Compiles.xcdatamodel files and places them in the Resources dir(as .mom).
New use-pythonpath option. The py2app application bootstrapwill no longer use entries from PYTHONPATH unless this optionis used.
py2app now persists information about the build environment(python version, executable, build style, etc.) in theInfo.plist and will clean the executable before rebuildingif anything at all has changed.
bdist_mpkg now builds packages with the full platform info,so that installing a package for one platform combinationwill not look like an upgrade to another platform combination.
Bug Fixes:
Fixed a bug in standalone building, where a rebuild couldcause an unlaunchable executable.
Plugin bootstrap should compile/link correctlywith gcc 4.
Plugin bootstrap no longer sets PYTHONHOME and willrestore PYTHONPATH after initialization.
Plugin bootstrap swaps out thread state upon plug-inload if it is the first to initialize Python. Thisfixes threading issues.
py2app 0.1.9
py2app 0.1.9 is a minor bug fix release.
Bugs fixed:
bdist_mpkg now builds zip files that are correctly unzippedby all known tools.
The behavior of the bootstrap has changed slightly such that__file__ should now point to your main script, rather thanthe bootstrap. The main script has also moved toResources,fromResources/Python, so that__file__ relative resourcepaths should still work.
py2app 0.1.8
py2app 0.1.8 is a major enhancements release:
Bugs fixed:
Symlinks in included frameworks should be preserved correctly(fixes Tcl/Tk)
Fixes some minor issues with alias bundles
Removed implicit SpiderImagePlugin -> ImageTk reference in PILrecipe
The--optimize option should work now
weakref is now included by default
anydbm’s dynamic dependencies are now in the standard implieslist
Errors on app launch are brought to the front so the user doesnot miss them
bdist_mpkg now compatible with pychecker (data_files had issues)
Options changed:
deprecated--strip, it is now on by default
new--no-strip option to turn off stripping of executables
New features:
Looks for a hacked version of the PyOpenGL __init__.py so thatit doesn’t have to include the whole package in order to getat the stupid version file.
Newloader_files key that a recipe can return in order toensure that non-code ends up in the .zip (the pygame recipeuses this)
Now scans all files in the bundle and normalizes Mach-O loadcommands, not just extensions. This helps out when using the--package option, when including frameworks that have plugins,etc.
An embedded Python interpreter is now included in the executablebundle (sys.executable points to it), this currently onlyworks for framework builds of Python
Newmacho_standalone tool
Newmacho_find tool
Major enhancements to the way plugins are built
bdist_mpkg now has a--zipdist option to build zip filesfrom the built package
The bdist_mpkg “Installed to:” description is now based on thepackage install root, rather than the build root
py2app 0.1.7
py2app 0.1.7 is a bug fix release:
Thebdist_mpkg script will now set up sys.path properly, for setup scriptsthat require local imports.
bdist_mpkg will now correctly acceptReadMe,License,Welcome,andbackground files by parameter.
bdist_mpkg can now display a custom background again (0.1.6 broke this).
bdist_mpkg now accepts abuild-base= argument, to put build files inan alternate location.
py2app will now accept main scripts with a.pyw extension.
py2app’s not_stdlib_filter will now ignore asite-python directory aswell assite-packages.
py2app’s plugin bundle template no longer displays GUI dialogs by default,but still links toAppKit.
py2app now ensures that the directory of the main script is now added tosys.path when scanning modules.
Thepy2app build command has been refactored such that it would be easierto change its behavior by subclassing.
py2app alias bundles can now cope with editors that do atomic saves(write new file, swap names with existing file).
macholib now has minimal support for fat binaries. It still assumes bigendian and will not make any changes to a little endian header.
Add a warning message when using theinstall command rather than installingfrom a package.
Newsimple/structured example that shows how you could package anapplication that is organized into several folders.
NewPyObjC/pbplugin Xcode Plug-In example.
py2app 0.1.6
Since I have been slacking and the last announcement was for 0.1.4, here are thechanges for the soft-launched releases 0.1.5 and 0.1.6:
py2app 0.1.6 was a major feature enhancements release:
py2applet andbdist_mpkg scripts have been moved to Python modulesso that the functionality can be shared with the tools.
Generic graph-related functionality frompy2app was moved toaltgraph.ObjectGraph andaltgraph.GraphUtil.
bdist_mpkg now outputs more specific plist requirements(for future compatibility).
py2app can now create plugin bundles (MH_BUNDLE) as well as executables.New recipe for supporting extensions built withsip, such asPyQt. Note thatdue to the way thatsip works, when one sip-based extension is used,allsip-based extensions are included in your application. In practice, this meansanything provided byRiverbank, I don’t think anyone else usessip (publicly).
New recipe forPyOpenGL. This is very naive and simply includes the wholething, rather than trying to monkeypatch their brain-deadversion acquisition routine in__init__.
Bootstrap now setsARGVZERO andEXECUTABLEPATH environment variables,corresponding to theargv[0] and the_NSGetExecutablePath(...) that thebundle saw. This is only really useful if you need to relaunch your ownapplication.
More correctdyld search behavior.
Refactoredmacholib to usealtgraph, can now generateGraphViz graphsand more complex analysis of dependencies can be done.
macholib was refactored to be easier to maintain, and the structure handlinghas been optimized a bit.
The few tests that there are were refactored inpy.test style.
NewPyQt example.
NewPyOpenGL example.
See also:
py2app 0.1.5
py2app 0.1.5 is a major feature enhancements release:
Added abdist_mpkg distutils extension, for creating Installeran metapackage from any distutils script.
Includes PackageInstaller tool
bdist_mpkg script
setup.py enhancements to support bdist_mpkg functionality
- Added aPackageInstaller tool, a droplet that performs the same function
as thebdist_mpkg script.
Create a custombdist_mpkg subclass forpy2app’s setup script.
Source package now includesPJE’ssetuptools extension to distutils.
Added lots of metadata to the setup script.
py2app.modulegraph is now a top-level package,modulegraph.
py2app.find_modules is nowmodulegraph.find_modules.
Should now correctly handle paths (and application names) with unicode charactersin them.
New--strip option forpy2app build command, strips all Mach-O filesin output application bundle.
New--bdist-base= option forpy2app build command, allows an alternatebuild directory to be specified.
Newdocutils recipe.Support for non-framework Python, such as the one provided byDarwinPorts.
See also:
py2app 0.1.4
py2app 0.1.4 is a minor bugfix release:
Thealtgraph from 0.1.3 had a pretty nasty bug in it that preventedfiltering from working properly, so I fixed it and bumped to 0.1.4.
py2app 0.1.3
py2app 0.1.3 is a refactoring and new features release:
altgraph, my fork of Istvan Albert’sgraphlib, is now part of thedistribution
py2app.modulegraph has been refactored to usealtgraph
py2app can now createGraphViz DOT graphs with the-g option(TinyTinyEdit example)
Moved the filter stack intopy2app.modulegraph
Fixed a bug that may have been in 0.1.2 where explicitly included packageswould not be scanned bymacholib
py2app.apptemplate now contains a stripped downsite module asopposed to asitecustomize
Alias builds are now the only ones that contain the system and usersite-packages directory insys.path
Thepydoc recipe has been beefed up to also excludeBaseHTTPServer,etc.
Known issues:
Commands marked with XXX in the help are not implemented
Includesall files from packages, it should be smart enough to stripunused .py/.pyc/.pyo files (to save space, depending on which optimizationflag is used)
macholib should be refactored to usealtgraph
py2app.build_app andpy2app.modulegraph should be refactored tosearch for dependencies on a per-application basis
py2app 0.1.2
py2app 0.2 is primarily a bugfix release:
The encodings package now gets included in the zip file (saves space)
A copy of the Python interpreter is not included anymore in standalonebuilds (saves space)
The executable bootstrap is now stripped by default (saves a little space)
sys.argv is set correctly now, it used to point to the executable, nowit points to the boot script. This should enhance compatibility with someapplications.
Adds an “Alias” feature to modulegraph, so thatsys.modules crazinesssuch aswxPython.wx-> wx can be accomodated (this particular crazinessis also now handled by default)
Asys.path alternative may be passed tofind_modules now, thoughthis is not used yet
TheCommand instance is now passed to recipes instead of theDistribution instance (though no recipes currently use either)
The post-filtering of modules and extensions is now generalized into astack and can be modified by recipes
AwxPython example demonstrating how to packagewxGlade has beenadded (this is a good example of how to write your own recipe, and how todeal with complex applications that mix code and data files)
PyRuntimeLocations is now set to (only) the location of the currentinterpreter’sPython.framework for alias and semi-standalone buildmodes (enhances compatibility with extensions built with an unpatchedMakefile with Mac OS X 10.3’s Python 2.3.0)
Known issues:
Includesall files from packages, it should be smart enough to stripunused .py/.pyc/.pyo files (to save space, depending on which optimizationflag is used).
py2app 0.1.1
py2app 0.1.1 is primarily a bugfix release:
- Several problems related to Mac OS X 10.2 compatibility and standalone
building have been resolved
Scripts that are not in the same directory as setup.py now work
A new recipe has been added that removes the pydoc -> Tkinter dependency
A recipe has been added forpy2app itself
awxPython example (superdoodle) has been added.Demonstrates not only how easy it is (finally!) to bundlewxPython applications, but also how one setup.py candeal with bothpy2exe andpy2app.
A new experimental tool, py2applet, has been added.Once you’ve built it (python setup.py py2app, of course), you shouldbe able to build simple applications simply by dragging your main scriptand optionally any packages, data files, Info.plist and icon it needs.
Known issues:
Includesall files from packages, it should be smart enough to stripunused .py/.pyc/.pyo files (to save space, depending on whichoptimization flag is used).
The defaultPyRuntimeLocations can cause problems on machines thathave a /Library/Frameworks/Python.framework installed. Workaround isto set a plist that has the following key:PyRuntimeLocations=['/System/Library/Frameworks/Python.framework/Versions/2.3/Python'](this will be resolved soon)
py2app 0.1
(first public release)py2app is the bundlebuilder replacement we’ve all been waitingfor. It is implemented as a distutils command, similar topy2exe.
Project details
Verified details
These details have beenverified by PyPIMaintainers
Meta
- Author:Ronald Oussoren
- Maintainer:Ronald Oussoren
Unverified details
These details havenot been verified by PyPIProject links
Meta
- License: MIT License (MIT or PSF License)
- Author: Ronald Oussoren
- Maintainer: Ronald Oussoren
- Tags .app, standalone
Classifiers
- Development Status
- Environment
- Intended Audience
- License
- Natural Language
- Operating System
- Programming Language
- Topic
Release historyRelease notifications |RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more aboutinstalling packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more aboutwheel file names.
Copy a direct link to the current filters
File details
Details for the filepy2app-0.28.9.tar.gz.
File metadata
- Download URL:py2app-0.28.9.tar.gz
- Upload date:
- Size: 1.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | bcbddd3017c51203858428f4cd66a7d7ea1096c6d57f1257cc2fdb066927c7c5 | |
| MD5 | 38da368bcf36265c1d2f65a8da32984c | |
| BLAKE2b-256 | 2314657162299713f5d33e4f90158f99da838013388ccb8f2529151735e3ee64 |
File details
Details for the filepy2app-0.28.9-py2.py3-none-any.whl.
File metadata
- Download URL:py2app-0.28.9-py2.py3-none-any.whl
- Upload date:
- Size: 837.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | e698a8cc8ee8e899672ce93fee3727088c08b3c9a765cfc6519c24ca8e3e63f8 | |
| MD5 | af0ff8dd9121d67337760de6ac8c22d1 | |
| BLAKE2b-256 | 223a294a507d73b8e3f261f75d778bd804d9ec183bb56c7052a9123ee86f1a65 |