Install & Compatibility
Where this runs
tested against v? · pip install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.920 runs
build_error
glibcpy 3.10–3.920 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
FSKit
✓ import FSKit
The FSKit framework's classes and functions are typically accessed through the top-level FSKit module after importing.
FSKExtension
✓ from FSKit import FSKExtension
✗ from pyobjc_framework_fskit import FSKExtension
PyObjC framework symbols are imported directly from the framework's module name, not the PyPI package name.
This quickstart demonstrates how to import the `FSKit` framework and access one of its core classes, `FSKExtension`. Note that fully utilizing FSKit requires creating and registering a Finder Sync Extension within a macOS application bundle, which is a more complex setup not covered in this minimal example.
import FSKit
import objc # Required for objc.lookUpClass
# FSKit is primarily designed for creating Finder Sync extensions on macOS.
# A full functional example requires registering an extension with macOS,
# which is beyond a simple quickstart. This code demonstrates loading
# the framework and accessing a core class.
# Access a known class from the FSKit framework, e.g., FSKExtension
# FSKExtension is the base class for implementing Finder Sync extensions.
FSKExtension_Class = FSKit.FSKExtension
print(f"FSKit module loaded: {FSKit}")
print(f"FSKExtension class type: {type(FSKExtension_Class)}")
print(f"FSKExtension inherits from NSObject: {issubclass(FSKExtension_Class, objc.lookUpClass('NSObject'))}")
# To actually use FSKit, you would typically subclass FSKExtension, implement
# its methods, and configure your macOS application's Info.plist to register
# it as a Finder Sync extension. This process requires Xcode and specific
# application bundling and is not shown here.
Debug
Known issues
breakingPython 3.9 support was dropped in PyObjC 12.0. Ensure your Python environment is 3.10 or newer. Earlier versions (PyObjC 11.0) dropped Python 3.8 support.fixUpgrade your Python interpreter to version 3.10 or later. For older Python versions, use PyObjC versions compatible with your Python (e.g., PyObjC 11 for Python 3.9, PyObjC 10 for Python 3.8).
affects: >=12.0 for Python 3.9, >=11.0 for Python 3.8
breakingPyObjC 11.1 aligned its behavior with `clang`'s automatic reference counting (ARC) documentation for initializer methods. Methods in the 'init' family now correctly steal a reference to self and return a new reference, which might change memory management expectations for advanced users interacting directly with ObjC `init` patterns.fixReview code that directly calls Objective-C `init` methods or manually manages references. Ensure proper `retain`/`release` semantics are implicitly or explicitly handled according to ARC rules.
affects: >=11.1
gotchaIn PyObjC 10.3, calling `__init__` on classes where `__new__` was provided by PyObjC was disabled. This was partially reverted in 10.3.1, reintroducing the ability to use `__init__` when a user implements `__new__`. However, `__init__` still cannot be used when `__new__` is provided by PyObjC and not overridden by the user.fixIf implementing custom class instantiation, define your own `__new__` method to ensure `__init__` can be called. Be aware that PyObjC-provided `__new__` implementations might still prevent `__init__` from being called in certain scenarios.
affects: 10.3, 10.3.1
breakingThe `IMServicePlugIn` bindings were entirely removed in PyObjC 10.0, as the framework was deprecated in macOS 10.13 and removed in macOS 14. Any code relying on this framework will fail.fixRemove any dependencies on the `IMServicePlugIn` framework. If its functionality is still required, investigate alternative macOS APIs (if available) or adjust application architecture.
affects: >=10.0
Upgrade
Version history
12.2latest on PyPI · released May 30, 2026
Audit
Dependencies
pyobjc-corerequiredCore bridge for Python and Objective-C, required by all pyobjc-framework-* packages.