Python PyObjC rumps py2app as a Mac App Store UI stack limits and native-shell options
Parent: macOS Menu-Bar App Design · Published reference · snapshot 2026-10-02
↓ Facts as markdownall context files
Source-anchored research for Python PyObjC rumps py2app as a Mac App Store UI stack limits and native-shell options. Run status: COMPLETED.
These notes link each claim to its source. Some citations identify archived research reports that are no longer hosted on this site. A published reference means the content is available; it does not certify independent review or accuracy.Read the editorial policy and follow the sources before relying on a claim.
Definitions
- rumps is a thin wrapper over NSStatusItem/NSMenu via PyObjC; its latest PyPI release is 0.4.0 (15 Oct 2022), so it has had no release for about four years and is effectively unmaintained. (high confidence) (verified as of 2026-10-02) [source]
Problems, failure modes and limitations
- CPython's standard library contains code that trips Mac App Store automated validation (reported as false positives); CPython ships a patch applied by configuring with --with-app-store-compliance. A python.org or Homebrew interpreter bundled unpatched may fail validation. (high confidence) [source]
- Signing a py2app bundle with sandbox entitlements can produce 'Killed: 9' with 'Requirements for restricted entitlements failed to validate, error -67050' and 'AMFI: code signature validation failed'; py2app issue 415 (Mar 2022, py2app 0.27) remains open with no maintainer resolution shown. (medium confidence) [source]
- Very old py2app versions (before 0.8.1) create invalid Python.framework bundles that fail Mac App Store checks; the older guides require recursive manual codesigning of nested frameworks and helpers with the sandbox entitlement. (medium confidence) [source]
Facts and statements
- The rumps README says it fits notification utilities, daemon controllers and periodic API displays, and is a poor fit for GUI-first apps; it recommends py2app for standalone builds (LSUIElement True) and warns against virtualenv. (high confidence) [source]
- py2app is maintained: 0.28.10 (13 Feb 2026) fixed setuptools 82 breakage; 0.28.9 added Python 3.14 support. It requires Python >=3.10, builds only on macOS and does not support free-threaded Python. (low confidence) (verified as of 2026-02-13) [source]
- A sandboxed py2app app fails at launch if the bundled Python runtime is missing or mis-linked: the app falls back to a system or home-directory Python the sandbox blocks, giving errors like 'ImportError: No module named os'. The fix is to bundle Python.framework properly and remove home-directory paths such as PythonExecutable from Info.plist. (medium confidence) [source]
- An Apple DTS engineer's suggested remedy in a sandboxed-Python forum thread was to rewrite the app in Swift, and the thread notes temporary-exception entitlements are not acceptable for App Store releases. A sandboxed network monitor should plan on only standard entitlements (e.g. network.client). (low confidence) [source]
- The most recent public end-to-end Python-to-Mac-App-Store guide found uses PyInstaller+PySide6 (Oct 2022, Python 3.9, tested only on M1) and requires a provisioning profile, two 3rd-party Mac Developer certificates and a hand-built entitlements plist; it is fragile to spec-file settings. No 2024-2026 py2app/rumps success story was found. (low confidence) (verified as of 2022-10-01) [source]
- Native-shell option: keep the status item, sandbox entitlements, signing and App Store packaging in a small Swift/Xcode app and run Python only as an embedded or helper engine. This follows from the unmaintained rumps, the interpreter-compliance patch and the fragile signing path; it is an inference, not an Apple-documented pattern. (low confidence) [source]
Children
- No children recorded.