Question: I'm trying to run an old app that requires python < 3.7. I'm currently using python 3.9 and need to use multiple versions of python. I've installed pyenv-virtualenv and pyenv and successfully installed python 3.7.13. However, when I try to install 3.6.*, I get this: $ pyenv install 3.6.13 python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.6.13.tar.xz... -> https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tar.xz Installing Python-3.6.13... python-build: use tcl-tk from homebrew python-build: use readline from homebrew python-build: use zlib from xcode sdk BUILD FAILED (OS X 12.3.1 using python-build 2.2.5-11-gf0f2cdd1) Inspect or clean up the working tree at /var/folders/r5/xz73mp557w30h289rr6trb800000gp/T/python-build.20220413143259.33773 Results logged to /var/folders/r5/xz73mp557w30h289rr6trb800000gp/T/python-build.20220413143259.33773.log Last 10 log lines: checking for --with-cxx-main=<compiler>... no checking for clang++... no configure: By default, distutils will build C++ extension modules with "clang++". If this is not intended, then set CXX on the configure command line. checking for the platform triplet based on compiler characteristics... darwin configure: error: internal configure error for the platform triplet, please file a bug report make: *** No targets specified and no makefile found. Stop.  Is there a way to solve this? I've looked and it seems like Mac M1 doesn't allow installing 3.6.*

Answer: Copying from a GitHub issue.  I successfully installed Python 3.6 on an Apple M1 MacBook Pro running Monterey using the following setup. There is probably some things in here that can be removed/refined... but it worked for me! #Install Rosetta /usr/sbin/softwareupdate --install-rosetta --agree-to-license # Install x86_64 brew arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" # Set up x86_64 homebrew and pyenv and temporarily set aliases alias brew86="arch -x86_64 /usr/local/bin/brew" alias pyenv86="arch -x86_64 pyenv" # Install required packages and flags for building this particular python version through emulation brew86 install pyenv gcc libffi gettext export CPPFLAGS="-I$(brew86 --prefix libffi)/include -I$(brew86 --prefix openssl)/include -I$(brew86 --prefix readline)/lib" export CFLAGS="-I$(brew86 --prefix openssl)/include -I$(brew86 --prefix bzip2)/include -I$(brew86 --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include -Wno-implicit-function-declaration" export LDFLAGS="-L$(brew86 --prefix openssl)/lib -L$(brew86 --prefix readline)/lib -L$(brew86 --prefix zlib)/lib -L$(brew86 --prefix bzip2)/lib -L$(brew86 --prefix gettext)/lib -L$(brew86 --prefix libffi)/lib" # Providing an incorrect openssl version forces a proper openssl version to be downloaded and linked during the build export PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA=openssl@1.0 # Install Python 3.6 pyenv86 install --patch 3.6.15 <<(curl -sSL https://raw.githubusercontent.com/pyenv/pyenv/master/plugins/python-build/share/python-build/patches/3.6.15/Python-3.6.15/0008-bpo-45405-Prevent-internal-configure-error-when-runn.patch\?full_index\=1)  Note, the build succeeds but gives the following warning WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?  running pyenv versions shows that 3.6.15 can be used normally by the system