
Older Macs use this instruction set as well, but new Macs with M1 or M2 processors use the ARM64 instruction set, aka aarch64 Apple calls these “Apple Silicon” CPUs just to throw in a little meaningless terminology confusion.ĪRM64 and x86_64 instruction sets are different languages a CPU that speaks one can’t understand the other. My Linux computer is running an Intel chip, which uses the x86_64 instruction set, also known as AMD64 since it was first created by AMD.ĬPUs from Intel and AMD uses this instruction set. The CPU instruction set is the language the CPU speaks, the set of binary instructions it can interpret. It’s not the operating system it’s the result of a different CPU instruction set combined with lack of binary wheels. So why do the Linux machine and Mac have such different outcomes? The problem: different hardware and wheel availability Identifying the problem Symptom #1: You need a compilerĮRROR: Could not find a version that satisfies the requirement filprofiler=2022.05.0 (from versions: none)ĮRROR: No matching distribution found for filprofiler=2022.05.0 A takeaway for maintainers of open source Python packages.Solving problem with CPU emulation, some of the downsides of this solution, and future improvements to look forward to.Solving the problem by ensuring the code is installable or compilable.The cause of the problem: a different CPU instruction set.Common symptoms of the problem when using Python.The symptoms can be non-obvious, though, so in this article we’ll cover: The problem is that the promise of reproducibility relies on certain invariants that don’t apply on newer Macs.

What used to work before-on an older Mac, or on a Linux machine-fails in completely unexpected ways. So it can be a little confusing when you try to build your Python-based Dockerfile on a new Mac, and everything starts failing. One of the promises of Docker is reproducibility: you can build an image on a different machine, and assuming you’ve done the appropriate setup, get the same result.
