Problems installing python 3.6 with pyenv on Mac OS Big Sur
Asked Answered
D

7

58

When installing Python 3.6.13 on my MacBook Air, OS Big Sur, using the command pyenv install 3.6.13 I get this error:

Installing Python-3.6.13...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk

BUILD FAILED (OS X 11.3 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/7j/0qtpb8vs1_s34ynv0f6rrs840000gn/T/python-build.20210304114832.65954
Results logged to /var/folders/7j/0qtpb8vs1_s34ynv0f6rrs840000gn/T/python-build.20210304114832.65954.log

Last 10 log lines:
./Modules/posixmodule.c:8210:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        ret = sendfile(in, out, offset, &sbytes, &sf, flags);
              ^
./Modules/posixmodule.c:10432:5: warning: code will never be executed [-Wunreachable-code]
    Py_FatalError("abort() called from Python code didn't abort!");
    ^~~~~~~~~~~~~
1 warning and 1 error generated.
1 warning generated.
make: *** [Modules/posixmodule.o] Error 1
make: *** Waiting for unfinished jobs....

Any suggestions on how to fix this or another work around to install python 3.6.13 would be greatly appreciated. I currently have python 3.8, but need 3.6 in order to run:

conda install -c deezer-research spleeter 
Doorbell answered 4/3, 2021 at 20:11 Comment(5)
github.com/pyenv/pyenv/issues/1740 seems to be the same as your 3.6 issueLavonnelaw
Have you looked at asdf? asdf-vm.com It's personal preference, but I found it the easiest way to juggle the python versioning headaches.Whitsun
@Whitsun asdf is awesome but it uses pyenv under the hood, so this thread is actual for both of the tools.Arianism
Seems like this is an issue Apples new Clang release. Here is the fix. issueantenna.com/repo/pyenv/pyenv/issues/2284Polyglot
For macOS 13.4 Ventura, I hit a similar issue. A complete uninstall and reinstall of Homebrew and its formulae worked for me: https://mcmap.net/q/331618/-can-39-t-build-any-python-version-on-mac-os-x-13-4-with-pyenvForster
D
95

Thanks to jordanm, The solution was to follow https://github.com/pyenv/pyenv/issues/1740#issuecomment-738749988

brew reinstall zlib bzip2

From people's comments (thanks to Lukasz Czerwinski and Alex Veksler) it seems many view this next step as optional (and even dangerous) and prefer to skip it; though, it's worth a try if nothing else is working:

sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

Whether you chose to skip the last step or not, continue by editing .zshrc or .bashrc using:

nano ~/.zshrc or nano ~/.bashrc

and add:

export PATH="$HOME/.pyenv/bin:$PATH"
export PATH="/usr/local/bin:$PATH"

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include"

after editing and saving that file, run:

. ~/.zshrc or . ~/.bashrc

Then run the command below to install (changing 3.6.0 for the desired patch)

CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.6.0 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
Doorbell answered 4/3, 2021 at 21:46 Comment(13)
I confirm it worked for Python 3.6.13 for pyenv 1.2.26 on MacOS Big Sur (11.2.3). (Actually, I skipped sudo rm -rf /Library/Developer/CommandLineTools and xcode-select --install but followed all the rest)Householder
This is not working for Mac M1 with Big Sur 11.2.2.Greaser
Worked for python 3.5.10 MacOs 11.2Sappanwood
It worked for me, python 3.8.0 - MacOs 11.2.1Diaphanous
This worked for me, 2019 Macbook Pro Intel MacOS 11.4, Python 3.6.9.Howzell
@Greaser Python 3.9 is the first version of Python to have full support for Mac M1.Sixtieth
@Sixtieth Yes i figured that and ended up using 3.9.5.Greaser
Worked for Python 3.6.8 on macOS 11.4. Don't forget to run the last command from OP.Nasho
It worked for me! Thanks! Big Sur 11.5.2, Python 3.7.2Aurangzeb
I have been on Intel Macs for about four years ago, and I generally get an error like this after an OS update. Almost every time: sudo rm -rf /Library/Developer/CommandLineTools && xcode-select --install fixes the issue. It is as the CommandLineTools don't get updated correctly.Headed
I was able to install Python 3.6 on Big Sur 11.6.1. However when I try to run python using the command : /Users/myuserid/.pyenv/versions/3.6.0/bin/python3.6, I get a message - "xcode-select: Failed to locate 'python3.6', requesting installation of command line developer tools". I have installed xcode command line tool multiple times, but get same error. How can this be fixed?Telegraphese
Running the command that starts with CFLAGS as shown, I got a ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? error. I believe this is because the brew --prefix openssl command was outputting OpenSSL@3 in 2022, and by changing the command to include brew --prefix [email protected] instead in the two places it occurs, I was able to get 3.6.9 to install.Lowlife
After I added export PATH="/usr/local/bin:$PATH"to mi ~/.zshrc my brew started to point /usr/local/ instead of /opt/homebrew/ on which brew. Be aware of that.Gabbi
P
27

According to this: https://github.com/pyenv/pyenv/issues/1737#issuecomment-731672292 this is related to a commit issue and the following fixes it. It worked for me.

CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" 

LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"

pyenv install --patch 3.6.13 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)

Palatial answered 2/7, 2021 at 15:10 Comment(6)
Thank you for distilling this -- to others: this is the right answerChiropractic
Also if you are on apple silicon (M1), prefix install comand with arch -x86_64, otherwise it fails with configure: error: Unexpected output of 'arch' on OSXSelfhelp
This worked for me with python 3.6.14 on bigsur 11.6. Many thanksLoriloria
This did finally work for me on intel mac with 12.0.1 Monterey.Nancee
This fixed installing Python 3.7.2 on macOS 11.5.2 (Big Sur).Hereon
This also works for Python 3.5.10 on macOS 11.6 (same patch). I don't see the need to add stuff to .bashrc.Op
P
9

The following steps finally worked for my MacBook Air M1 with Big Sur 11.6.

‼️ Please note that this instruction is for Rosetta 2 emulated x86 terminal.

  1. Install brew:

    arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. Install the recommended dependencies:

    arch -x86_64 brew install openssl readline sqlite3 xz zlib
    
  3. Install Pyenv with brew:

    arch -x86_64 brew install pyenv
    
  4. Configure your shell's environment (in my case zsh):

    echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
    
  5. Restart the terminal.

  6. Add environment variables (in my case the problem was with zlib and openssl):

    export LDFLAGS="-L/usr/local/opt/zlib/lib"
    export CPPFLAGS="-I/usr/local/opt/zlib/include"
    export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
    
  7. Install the required Python version with patch:

    arch -x86_64 pyenv install --patch 3.6.15 <<(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
    
  8. Switch shell to new Python version:

    pyenv shell 3.6.15
    
  9. Check the currently used Python version:

    pyenv which python3
    
Phalan answered 9/10, 2021 at 15:9 Comment(0)
T
3

The answer by Jacob Anderson was right, but it’s worth noting that there's no need to perform the dangerous step:

sudo rm -rf /Library/Developer/CommandLineTools 

Things worked for me (installed Python 3.6.0 on MacOS 11.4) without doing it. Thanks to Jacob!

Tact answered 28/6, 2021 at 13:35 Comment(0)
A
1

I was facing this on mu ubuntu machine, I uninstalled Brew and reinstalled pyenv from source. It worked for me.

Avraham answered 15/12, 2021 at 10:47 Comment(0)
C
0
CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.6.13 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)

it Worked on MacOs 11.2.2

Chanellechaney answered 17/6, 2021 at 11:48 Comment(0)
B
-1

python version 3.6.15 worked for me, without any changes

Betaine answered 4/5, 2022 at 8:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.