<!-- llms-explorer concept facts · https://llms-explorer.com/tree/python-pyobjc-rumps-py2app-as-a-mac-app-store-ui-stack-limits-and-native-shell-options/ · pack 2026-10-02 · ~1036 tokens -->

# Python PyObjC rumps py2app as a Mac App Store UI stack limits and native-shell options

> Source-anchored research for Python PyObjC rumps py2app as a Mac App Store UI stack limits and native-shell options. Run status: COMPLETED.

Parent: [macOS Menu-Bar App Design](https://llms-explorer.com/tree/macos-menu-bar-app-design/) · 3 facets · 10 facts · page: https://llms-explorer.com/tree/python-pyobjc-rumps-py2app-as-a-mac-app-store-ui-stack-limits-and-native-shell-options/

## 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](https://pypi.org/project/rumps/)

## 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](https://docs.python.org/3/using/mac.html)
- 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](https://github.com/ronaldoussoren/py2app/issues/415)
- 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](https://github.com/davidfstr/Python-in-Mac-App-Store)

## 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](https://github.com/jaredks/rumps)
- 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](https://pypi.org/project/py2app/)
- 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](https://developer.apple.com/forums/thread/129045)
- 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](https://developer.apple.com/forums/thread/129045)
- 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](https://github.com/nyavramov/python_app_mac_app_store)
- 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](https://developer.apple.com/forums/thread/129045)
