Created
January 2, 2021 11:35
-
-
Save yatsu/9ae2dc633511d6d97efccd4fcfa8c8b1 to your computer and use it in GitHub Desktop.
Install Python 3.8.6 with pyenv on macOS Big Sur (11)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| # 1) Install Xcode 12 | |
| # 2) Install command line tools: `xcode-select --install` | |
| # 3) Install Homebrew | |
| # 4) brew install zlib bzip2 xz | |
| CFLAGS="-I$(brew --prefix zlib)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix xz)/include" \ | |
| LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib -L$(brew --prefix xz)/lib" \ | |
| pyenv install 3.8.6 |
Author
Check bzip2 is correctly installed.
$ ls $(brew --prefix bzip2)/lib
libbz2.alibbz2.a is the library Python should link to. -devel package is not required in macOS/Homebrew.
Next, make sure the arguments -I$(brew --prefix bzip2)/include and -L$(brew --prefix bzip2)/lib (don't mix up -I and -L, include and lib).
pyenv install -v shows the compile log. You can check if bz2 module was successfully installed.
$ LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install -v 3.8.5 2>&1 | grep bz2
building '_bz2' extension
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -I./Include/internal -I./Include -I. -I/opt/brew/opt/readline/include -I/opt/brew/opt/zlib/include -I/usr/local/include -I/private/var/folders/nb/dw5p3r0j17q4y5r5wkhpnr0r0000gn/T/python-build.20210104122251.50610/Python-3.8.5/Include -I/private/var/folders/nb/dw5p3r0j17q4y5r5wkhpnr0r0000gn/T/python-build.20210104122251.50610/Python-3.8.5 -c /private/var/folders/nb/dw5p3r0j17q4y5r5wkhpnr0r0000gn/T/python-build.20210104122251.50610/Python-3.8.5/Modules/_bz2module.c -o build/temp.macosx-11.1-x86_64-3.8/private/var/folders/nb/dw5p3r0j17q4y5r5wkhpnr0r0000gn/T/python-build.20210104122251.50610/Python-3.8.5/Modules/_bz2module.o
clang -bundle -undefined dynamic_lookup -L/opt/brew/opt/readline/lib -L/opt/brew/opt/readline/lib -L/Users/yatsu/.pyenv/versions/3.8.5/lib -L/opt/brew/opt/zlib/lib -L/opt/brew/opt/bzip2/lib -L/opt/brew/opt/readline/lib -L/opt/brew/opt/readline/lib -L/Users/yatsu/.pyenv/versions/3.8.5/lib -L/opt/brew/opt/zlib/lib -L/opt/brew/opt/bzip2/lib -L/opt/brew/opt/readline/lib -L/opt/brew/opt/readline/lib -L/Users/yatsu/.pyenv/versions/3.8.5/lib -L/opt/brew/opt/zlib/lib -L/opt/brew/opt/bzip2/lib -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/opt/brew/opt/readline/include -I/opt/brew/opt/readline/include -I/Users/yatsu/.pyenv/versions/3.8.5/include -I/opt/brew/opt/zlib/include build/temp.macosx-11.1-x86_64-3.8/private/var/folders/nb/dw5p3r0j17q4y5r5wkhpnr0r0000gn/T/python-build.20210104122251.50610/Python-3.8.5/Modules/_bz2module.o -L/opt/brew/opt/readline/lib -L/Users/yatsu/.pyenv/versions/3.8.5/lib -L/opt/brew/opt/zlib/lib -L/opt/brew/opt/bzip2/lib -L/usr/local/lib -lbz2 -o build/lib.macosx-11.1-x86_64-3.8/_bz2.cpython-38-darwin.so -Wl,-search_paths_first
/opt/brew/bin/ginstall -c -m 644 ./Lib/bz2.py /Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8
/opt/brew/bin/ginstall -c -m 644 ./Lib/test/test_bz2.py /Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/test
/opt/brew/bin/ginstall -c -m 644 ./Lib/encodings/bz2_codec.py /Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/encodings
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/test/test_bz2.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/bz2.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/encodings/bz2_codec.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/test/test_bz2.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/bz2.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/encodings/bz2_codec.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/bz2.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/test/test_bz2.py'...
Compiling '/Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/encodings/bz2_codec.py'...
copying build/lib.macosx-11.1-x86_64-3.8/_bz2.cpython-38-darwin.so -> /Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/lib-dynload
changing mode of /Users/yatsu/.pyenv/versions/3.8.5/lib/python3.8/lib-dynload/_bz2.cpython-38-darwin.so to 755
I took another way.
OS: Big Sur 11.1
What I tried
- Remove brew and its packages
- and reinstall brew, pyenv, its dependencies python3.8.5
- without
brew install bzip2orbrew install openblas
Result
- no more Polyfit issue with numpy
- or no more _bz2 module issue with pandas
I have no idea what's changed, but it worked.
Thanks for your help anyway.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for your quick reply.
I still run into a WARNING after installing 3.8.6
What I did,
xcode-selectinstalled and up-to-datebrewand dependencies (bzip2, zlib, readline, xz) have installedpyenvand reinstallpyenv3.8.6and got a WARNINGMany recommendations are to install bzip2-devel, libbz2-dev... for Linux system, which brew doesn't have those formulae for MacOS.
What happened during installing pyenv
git issue, does this cause my bzip2 compiler problem?
Many thanks.