
【macOS Big Sur】 pyenv를 통해 오래된 파이썬 설치
개요
macOS Big Sur에서 pyenv에서 이전 파이썬 (이번에는 3.7 이하)을 설치하지 못했기 때문에 해결을 위해 한 일을 요약했습니다.
일본어에서는, 3.7 이하의 낡은 버젼의 인스톨에 실패하는 경우에 대해서는 그다지 정보가 없었으므로, 정리해 보았습니다.
환경
macOS Big Sur 버전 11.1
pyenv 1.2.22 (brew로 설치)
pyenv 버전 확인 방법은 다음과 같습니다.
pyenv --version
배경
macOS Big Sur에서 pyenv에서 이전 파이썬을 설치하려고 할 때 다음 오류가 발생하여 실패했습니다. 아무래도 3.8, 3.9의 설치는 할 수 있습니다만, 3.7 이하는 실패하는 것 같습니다.
% pyenv install 3.6.0
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
BUILD FAILED (OS X 11.1 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/qz/d2c_grsx75x9b2k6ddzdzm400000gn/T/python-build.20210207175025.47712
Results logged to /var/folders/qz/d2c_grsx75x9b2k6ddzdzm400000gn/T/python-build.20210207175025.47712.log
Last 10 log lines:
./Modules/posixmodule.c:8146: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:10340:5: warning: code will never be executed [-Wunreachable-code]
Py_FatalError("abort() called from Python code didn't abort!");
^~~~~~~~~~~~~
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I. -I./Include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/opt/[email protected]/include -I/Users/jiro/.pyenv/versions/3.6.0/include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/opt/[email protected]/include -I/Users/jiro/.pyenv/versions/3.6.0/include -DPy_BUILD_CORE -c ./Modules/_sre.c -o Modules/_sre.o
1 warning and 1 error generated.
make: *** [Modules/posixmodule.o] Error 1
make: *** Waiting for unfinished jobs....
해결 방법
가볍게 검색해 보면, macOS Big Sur에서 pyenv install에 실패하는 것은 자주 일어나고 있는 것 같고, 그 대책도 여러가지 논의되고 있었습니다. 일본어라면 xcode 커맨드 라인 툴을 최신의 것으로 하는 방법( macOS Big Sur에서 pyenv Python을 설치할 수없는 경우 등)이 자주 나오는 것입니다만 , 내 환경에서는 그러면 해결하지 않았습니다.
결국 아래 게시물의 방법으로 해결할 수있었습니다.
htps : // 기주 b. 코 m/피펜 v/피펜 v/이스에 s/1643 #이스에 코멘 t-755067511
이 issue 자체는 macOS Big Sur에서 python3.8 빌드에 실패한다는 질문에서 시작되고 있지만, 도중에 3.5를 설치할 수 없다는 이야기가 나오고, 결국 링크 대상의 comment에서 각각의 버전 의 방법은 해결 방법을 보여줍니다. 명령을 다음에 인용합니다.
라이브러리 설치
(자세한 내용은 이해할 수 없지만 아무래도이 라이브러리가 오래되었기 때문에 파이썬을 빌드 할 수없는 것 같습니다.)
brew install zlib
brew install sqlite
brew install bzip2
brew install libiconv
brew install libzip
파이썬 설치
3.4, 3.5, 3.6 설치
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.4.10 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.5.10 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.6.12 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
3.7개 이상의 설치
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.7.9
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.8.6
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.9.0
비고
위의 issue에 도달하기 전에 xcode 명령 줄 도구와 pyenv를 다시 설치하려고했습니다. 어쩌면 위에서 해결할 수 있었던 것에 영향을 주고 있을지도 모르기 때문에 일단 적어 둡니다.
xcode 명령줄 도구 재설치
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
pyenv 재설치
참고 : pyenv-virtualenv 등을 사용하는 사람들은 다시 설치하는 것이 좋습니다. 불안한 분은 스스로 방법을 조사하고 나서 실행 부탁합니다.
brew uninstall pyenv
brew install pyenv
결론
macOS Big Sur에서 파이썬 설치에 실패하는 현상은 아무것도있는 것 같습니다 (부담없이 업데이트하지 않았다,,,)
일본어라면 3.8이나 3.9의 설치에 실패했다고 하는 보고와 그 해결 방법은 몇 가지로 왔습니다만, 낡은 버젼의 인스톨에 대해서는 별로 정보가 없어, 영어의 issue를 맞추고 드디어 해결할 수 있었습니다 .
이 기사가 뭔가 도움이되면 다행입니다.
macOS Big Sur 버전 11.1
pyenv 1.2.22 (brew로 설치)
pyenv 버전 확인 방법은 다음과 같습니다.
pyenv --version
배경
macOS Big Sur에서 pyenv에서 이전 파이썬을 설치하려고 할 때 다음 오류가 발생하여 실패했습니다. 아무래도 3.8, 3.9의 설치는 할 수 있습니다만, 3.7 이하는 실패하는 것 같습니다.
% pyenv install 3.6.0
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
BUILD FAILED (OS X 11.1 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/qz/d2c_grsx75x9b2k6ddzdzm400000gn/T/python-build.20210207175025.47712
Results logged to /var/folders/qz/d2c_grsx75x9b2k6ddzdzm400000gn/T/python-build.20210207175025.47712.log
Last 10 log lines:
./Modules/posixmodule.c:8146: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:10340:5: warning: code will never be executed [-Wunreachable-code]
Py_FatalError("abort() called from Python code didn't abort!");
^~~~~~~~~~~~~
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I. -I./Include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/opt/[email protected]/include -I/Users/jiro/.pyenv/versions/3.6.0/include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/opt/[email protected]/include -I/Users/jiro/.pyenv/versions/3.6.0/include -DPy_BUILD_CORE -c ./Modules/_sre.c -o Modules/_sre.o
1 warning and 1 error generated.
make: *** [Modules/posixmodule.o] Error 1
make: *** Waiting for unfinished jobs....
해결 방법
가볍게 검색해 보면, macOS Big Sur에서 pyenv install에 실패하는 것은 자주 일어나고 있는 것 같고, 그 대책도 여러가지 논의되고 있었습니다. 일본어라면 xcode 커맨드 라인 툴을 최신의 것으로 하는 방법( macOS Big Sur에서 pyenv Python을 설치할 수없는 경우 등)이 자주 나오는 것입니다만 , 내 환경에서는 그러면 해결하지 않았습니다.
결국 아래 게시물의 방법으로 해결할 수있었습니다.
htps : // 기주 b. 코 m/피펜 v/피펜 v/이스에 s/1643 #이스에 코멘 t-755067511
이 issue 자체는 macOS Big Sur에서 python3.8 빌드에 실패한다는 질문에서 시작되고 있지만, 도중에 3.5를 설치할 수 없다는 이야기가 나오고, 결국 링크 대상의 comment에서 각각의 버전 의 방법은 해결 방법을 보여줍니다. 명령을 다음에 인용합니다.
라이브러리 설치
(자세한 내용은 이해할 수 없지만 아무래도이 라이브러리가 오래되었기 때문에 파이썬을 빌드 할 수없는 것 같습니다.)
brew install zlib
brew install sqlite
brew install bzip2
brew install libiconv
brew install libzip
파이썬 설치
3.4, 3.5, 3.6 설치
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.4.10 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.5.10 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.6.12 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
3.7개 이상의 설치
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.7.9
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.8.6
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.9.0
비고
위의 issue에 도달하기 전에 xcode 명령 줄 도구와 pyenv를 다시 설치하려고했습니다. 어쩌면 위에서 해결할 수 있었던 것에 영향을 주고 있을지도 모르기 때문에 일단 적어 둡니다.
xcode 명령줄 도구 재설치
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
pyenv 재설치
참고 : pyenv-virtualenv 등을 사용하는 사람들은 다시 설치하는 것이 좋습니다. 불안한 분은 스스로 방법을 조사하고 나서 실행 부탁합니다.
brew uninstall pyenv
brew install pyenv
결론
macOS Big Sur에서 파이썬 설치에 실패하는 현상은 아무것도있는 것 같습니다 (부담없이 업데이트하지 않았다,,,)
일본어라면 3.8이나 3.9의 설치에 실패했다고 하는 보고와 그 해결 방법은 몇 가지로 왔습니다만, 낡은 버젼의 인스톨에 대해서는 별로 정보가 없어, 영어의 issue를 맞추고 드디어 해결할 수 있었습니다 .
이 기사가 뭔가 도움이되면 다행입니다.
% pyenv install 3.6.0
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
BUILD FAILED (OS X 11.1 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/qz/d2c_grsx75x9b2k6ddzdzm400000gn/T/python-build.20210207175025.47712
Results logged to /var/folders/qz/d2c_grsx75x9b2k6ddzdzm400000gn/T/python-build.20210207175025.47712.log
Last 10 log lines:
./Modules/posixmodule.c:8146: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:10340:5: warning: code will never be executed [-Wunreachable-code]
Py_FatalError("abort() called from Python code didn't abort!");
^~~~~~~~~~~~~
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I. -I./Include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/opt/[email protected]/include -I/Users/jiro/.pyenv/versions/3.6.0/include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/opt/[email protected]/include -I/Users/jiro/.pyenv/versions/3.6.0/include -DPy_BUILD_CORE -c ./Modules/_sre.c -o Modules/_sre.o
1 warning and 1 error generated.
make: *** [Modules/posixmodule.o] Error 1
make: *** Waiting for unfinished jobs....
가볍게 검색해 보면, macOS Big Sur에서 pyenv install에 실패하는 것은 자주 일어나고 있는 것 같고, 그 대책도 여러가지 논의되고 있었습니다. 일본어라면 xcode 커맨드 라인 툴을 최신의 것으로 하는 방법( macOS Big Sur에서 pyenv Python을 설치할 수없는 경우 등)이 자주 나오는 것입니다만 , 내 환경에서는 그러면 해결하지 않았습니다.
결국 아래 게시물의 방법으로 해결할 수있었습니다.
htps : // 기주 b. 코 m/피펜 v/피펜 v/이스에 s/1643 #이스에 코멘 t-755067511
이 issue 자체는 macOS Big Sur에서 python3.8 빌드에 실패한다는 질문에서 시작되고 있지만, 도중에 3.5를 설치할 수 없다는 이야기가 나오고, 결국 링크 대상의 comment에서 각각의 버전 의 방법은 해결 방법을 보여줍니다. 명령을 다음에 인용합니다.
라이브러리 설치
(자세한 내용은 이해할 수 없지만 아무래도이 라이브러리가 오래되었기 때문에 파이썬을 빌드 할 수없는 것 같습니다.)
brew install zlib
brew install sqlite
brew install bzip2
brew install libiconv
brew install libzip
파이썬 설치
3.4, 3.5, 3.6 설치
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.4.10 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.5.10 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.6.12 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
3.7개 이상의 설치
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.7.9
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.8.6
LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install 3.9.0
비고
위의 issue에 도달하기 전에 xcode 명령 줄 도구와 pyenv를 다시 설치하려고했습니다. 어쩌면 위에서 해결할 수 있었던 것에 영향을 주고 있을지도 모르기 때문에 일단 적어 둡니다.
xcode 명령줄 도구 재설치
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
pyenv 재설치
참고 : pyenv-virtualenv 등을 사용하는 사람들은 다시 설치하는 것이 좋습니다. 불안한 분은 스스로 방법을 조사하고 나서 실행 부탁합니다.
brew uninstall pyenv
brew install pyenv
결론
macOS Big Sur에서 파이썬 설치에 실패하는 현상은 아무것도있는 것 같습니다 (부담없이 업데이트하지 않았다,,,)
일본어라면 3.8이나 3.9의 설치에 실패했다고 하는 보고와 그 해결 방법은 몇 가지로 왔습니다만, 낡은 버젼의 인스톨에 대해서는 별로 정보가 없어, 영어의 issue를 맞추고 드디어 해결할 수 있었습니다 .
이 기사가 뭔가 도움이되면 다행입니다.
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
brew uninstall pyenv
brew install pyenv
macOS Big Sur에서 파이썬 설치에 실패하는 현상은 아무것도있는 것 같습니다 (부담없이 업데이트하지 않았다,,,)
일본어라면 3.8이나 3.9의 설치에 실패했다고 하는 보고와 그 해결 방법은 몇 가지로 왔습니다만, 낡은 버젼의 인스톨에 대해서는 별로 정보가 없어, 영어의 issue를 맞추고 드디어 해결할 수 있었습니다 .
이 기사가 뭔가 도움이되면 다행입니다.