Installation

PyMemoryEditor is published on PyPI as a pure-Python wheel β€” there is no native build step or compiler required on any platform.

Requirements

Python3.10 or newer
Operating systemsπŸͺŸ Windows Β· 🐧 Linux Β· 🍎 macOS

Install the library

pip install PyMemoryEditor

Install with the bundled GUI app

The library ships an optional Cheat Engine-style GUI built on PySide6 (Qt for Python). To install it, use the app extra:

pip install "PyMemoryEditor[app]"

Once installed, launch the app from any terminal:

pymemoryeditor

The library itself stays dependency-free β€” only the app extra pulls in its dependencies.

See the GUI App guide for a tour of every feature.

Install with scan acceleration (speed)

Scans run in pure Python by default β€” no dependencies, works everywhere. If you scan large processes often, the optional speed extra pulls in NumPy and automatically vectorizes the inner comparison loop of the typed numeric scans (BIGGER_THAN, SMALLER_THAN, VALUE_BETWEEN, …):

pip install "PyMemoryEditor[speed]"

That’s the only change required β€” there is no new API and no flag to toggle. PyMemoryEditor detects NumPy at import time and switches the fast path on; if NumPy is absent it falls back to the pure-Python loop transparently. The results are identical either way β€” only the speed changes (typically ~10–30Γ— faster on selective scans of large regions). See Scan acceleration for details and benchmarks.

NumPy ships prebuilt wheels for Windows, Linux and macOS, so the speed extra stays compiler-free and cross-platform β€” no native build step on any OS.

Install from source

git clone https://github.com/JeanExtreme002/PyMemoryEditor.git
cd PyMemoryEditor
pip install -e ".[dev]"

The dev extra installs the test toolchain (pytest, pytest-xdist, pytest-qt, hypothesis, mypy, etc.) β€” see CONTRIBUTING.md for the development workflow.

Verifying the installation

import PyMemoryEditor
print(PyMemoryEditor.__version__)

If that prints a version number, you’re ready to go β€” head to the Quick Start.

Platform-specific notes

πŸͺŸ Windows

Works out of the box. To attach to protected processes (system services, elevated apps), run your terminal as Administrator.

🐧 Linux

Access depends on ptrace_scope and process ownership. If the target is not a child of the caller and ptrace_scope=1 (the common default), you’ll see a PermissionError. Run as root, or relax it:

sudo sysctl kernel.yama.ptrace_scope=0

🍎 macOS

Opening another process requires the Python binary to be signed with the com.apple.security.cs.debugger entitlement (or SIP disabled and root). Opening the current process always works β€” handy for self-inspection and experimentation.

For the long version, see Platform Notes.