macholib
Mach-O header analysis and editing
Decision gist · record as of 2026-08-14
Yes, if you are doing macOS binary analysis or packaging. The low install friction, permissive MIT license, and lack of known vulnerabilities make it a safe choice. However, the aging maintenance status (265 days since last release) means you should verify that recent macOS SDK features are supported if you need to work with newly compiled binaries.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires a Mach-O binary file to analyze; intended for macOS development workflows.
- Low install friction with a single pure-Python dependency (altgraph).
- Maintenance status is aging—last release 265 days ago—but the repository remains active with recent commits and no archived status.
License · maintenance · safety
MIT (permissive) — MIT license permits commercial and private use with minimal restrictions, making it safe to include in most projects.
last release 2025-11-22 (265 days) · last repo commit 2026-01-02 · 102 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 2,658,604 downloads/mo, #2,954 on PyPI
Alternatives
Verify before relying
pip install macholib
from macholib.MachO import MachO
m = MachO('/path/to/binary')
for header in m.headers:
print(header)- Whether the package is actively maintained or in maintenance-only mode given the aging status and 265-day release gap.
- Real-world performance characteristics when processing large or complex binaries.
What it is and what it does
macholib is a pure-Python library for reading and modifying Mach-O headers, the binary executable format used by macOS. Despite targeting a platform-specific format, it is written to be platform and endian independent, making it portable across systems. The library is commonly used as a dependency analysis tool to understand which dynamic libraries a macOS binary depends on, and to rewrite dylib load commands so they use relative paths like @executable_path instead of absolute paths.
The package is typically integrated into macOS build and packaging workflows, particularly in tools that need to analyze or relocate binaries. It provides both a programmatic API for working with Mach-O structures and command-line utilities (accessed via `python -m macholib`) for common tasks like dumping binary information, finding dependencies, and creating standalone application bundles.
Use it for
- Analyze dependencies of macOS binaries to understand which dylibs they load at runtime.
- Rewrite dylib references in Mach-O headers to use relative paths for relocatable application bundles.
- Inspect and debug Mach-O headers and load commands in binary files during macOS development.
- Automate binary relocation tasks in build pipelines that package Python applications for macOS.
- Parse and validate Mach-O structures in custom macOS tooling or security analysis workflows.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you are doing macOS binary analysis or packaging.
The low install friction, permissive MIT license, and lack of known vulnerabilities make it a safe choice. However, the aging maintenance status (265 days since last release) means you should verify that recent macOS SDK features are supported if you need to work with newly compiled binaries.
Install
macholib on PyPI
Before you install
Low install friction with a single pure-Python dependency (altgraph). Maintenance status is aging—last release 265 days ago—but the repository remains active with recent commits and no archived status.
Requires a Mach-O binary file to analyze; intended for macOS development workflows.
License in practice
MIT license permits commercial and private use with minimal restrictions, making it safe to include in most projects.
Quickstart
pip install macholib
from macholib.MachO import MachO
m = MachO('/path/to/binary')
for header in m.headers:
print(header)
Verify before relying
- Whether the package is actively maintained or in maintenance-only mode given the aging status and 265-day release gap.
- Real-world performance characteristics when processing large or complex binaries.
Package facts
| License | MIT permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagealtgraph |
| Maintenance | Aging 265 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,658,604 / month, #2,954 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: MacOS :: MacOS XProgramming Language :: PythonProgramming Language :: Python :: 2Programming Language :: Python :: 2.7Programming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.15Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Build ToolsTopic :: Software Development :: Libraries :: Python Modules |
Evidence: macholib-1.16.4-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “mach-o header analysis”
- macholibAnalyzes and edits Mach-O headers, the executable format used by…
- cleCLE loads binary executables and shared libraries, resolves their…
- smdaSMDA is a recursive disassembler library that recovers control flow…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also lief · delocate · pyobjc-framework-OpenDirectory · ropper · fb-idb · membrowse · readline · pyobjc-framework-ExecutionPolicy · find-exe · pyobjc-framework-VideoToolbox