pyobjc
Python<->ObjC Interoperability Module
What it is and what it does
PyObjC is a Python-to-Objective-C bridge that lets you write native macOS applications using Python instead of Swift or Objective-C. It exposes the full Cocoa framework and related macOS APIs as Python modules, so you can call Objective-C classes, methods, and properties directly from Python code. The package itself is a meta-installer that pulls in pyobjc-core plus framework wrappers covering system services, media, accessibility, and specialized domains.
You use it to build desktop applications for macOS, integrate Python with existing Objective-C codebases, or script macOS system functionality from Python. It supports modern Python versions and is actively maintained. The bridge handles the impedance mismatch between Python's dynamic typing and Objective-C's static type system, making interop relatively transparent for common tasks.
Use it for:
- Build a full-featured macOS desktop application in pure Python using Cocoa frameworks without learning Swift or Objective-C.
- Automate macOS system tasks by calling native APIs from Python scripts.
- Integrate Python data-processing logic into an existing Objective-C macOS application.
- Access specialized macOS frameworks like AVFoundation or ARKit from Python.
- Prototype or port a Python app to macOS while leveraging native UI and system capabilities.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyObjC bridges Python and Objective-C, enabling you to write full-featured macOS Cocoa applications in pure Python and access Objective-C frameworks from Python code.
Yes, if you are developing on macOS and want to write Cocoa applications or system tools in Python. The package is actively maintained, has no known vulnerabilities, and offers permissive licensing. Install only on macOS with Python 3.10 or higher; it will not work on Windows or Linux.
Install
pyobjc on PyPI
pip
pip install pyobjcuv
uv add pyobjcpoetry
poetry add pyobjcInstalling pyobjc
Before you install
Low install friction with a pure-wheel distribution. Actively maintained with a release 3 days old and recent commits; supports current Python versions including 3.10 through 3.15.
License in practice
MIT license is permissive, allowing use in commercial and proprietary projects with minimal restrictions—only requiring attribution and including the license text in distributions.
Quickstart
pip install pyobjc
import pyobjc_core
# Access Objective-C frameworks through pyobjc-framework-* packages
macOS only; requires Python 3.10 or higher. Will not work on Windows or Linux.
Verify before relying
- Whether all 162 runtime framework dependencies install cleanly on all supported macOS versions.
- Performance characteristics when calling Objective-C methods from Python in tight loops.
- Compatibility with Apple Silicon versus Intel-based macOS systems.
- Minimum macOS version requirement for runtime compatibility.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 162 — pyobjc-core, pyobjc-framework-libdispatch, pyobjc-framework-libxpc, pyobjc-framework-Accessibility, pyobjc-framework-AdServices, pyobjc-framework-AdSupport, pyobjc-framework-AppTrackingTransparency, pyobjc-framework-ARKit, pyobjc-framework-AudioVideoBridging, pyobjc-framework-AuthenticationServices, pyobjc-framework-AutomaticAssessmentConfiguration, pyobjc-framework-AVKit, pyobjc-framework-AVFoundation, pyobjc-framework-AVRouting, pyobjc-framework-Accounts, pyobjc-framework-AddressBook, pyobjc-framework-AppleScriptKit, pyobjc-framework-AppleScriptObjC, pyobjc-framework-ApplicationServices, pyobjc-framework-Automator, pyobjc-framework-BackgroundAssets, pyobjc-framework-BrowserEngineKit, pyobjc-framework-BusinessChat, pyobjc-framework-CFNetwork, pyobjc-framework-CalendarStore, pyobjc-framework-CallKit, pyobjc-framework-Carbon, pyobjc-framework-Cinematic, pyobjc-framework-ClassKit, pyobjc-framework-CloudKit |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 732,911/month — #5,199 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyobjc-12.2.2-py3-none-any.whl
Keywords: Objective-C, bridge, Cocoa
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
pyobjc-corePyObjC-core provides the foundational bridge…
permissive · top 5,000 on PyPI
pyobjc-framework-AppleScriptObjCProvides Python bindings to Apple's…
permissive · top 15,000 on PyPI
pyobjc-framework-SharedWithYouCoreProvides Python bindings for Apple's…
permissive · top 15,000 on PyPI
pyobjc-framework-ClassKitProvides Python bindings to Apple's ClassKit…
permissive · top 15,000 on PyPI
pyobjc-framework-PhotosProvides Python bindings to macOS's Photos…
permissive · top 15,000 on PyPI
pyobjc-framework-CocoaProvides Python bindings to macOS Cocoa…
permissive · top 5,000 on PyPI
CythonCython is a source code translator that…
permissive · top 1,000 on PyPI
rpy2-robjectsProvides a Python interface to call R code and…
copyleft · top 15,000 on PyPI
juliacallCall Julia code from Python and Python code…
permissive · top 15,000 on PyPI
rpy2-rinterfacerpy2-rinterface provides a low-level…
copyleft · top 15,000 on PyPI