関連:Homebrew 1.9.0 でWindows+WSLに対応したので導入してみた
pyenv+puthonのインストールに関する備忘録。
TL;DR
ググった限り、他サイトの記事やpyenvのwikiでは、シェル変数への代入による解説だったが、環境変数に代入が正解だった。
(Unix/Linuxの慣習で、文書等でexportが省略されていても、それは環境変数への代入を意味する、なのであれば自分の知識不足…)
export CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I/usr/include"
export LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib -L/usr/lib"
export LD_LIBRARY_PATH="$(brew --prefix readline)/lib"
pyenv install 3.7.2
環境
-
Windows10 Pro
- Version 1809
- Build 17763.253
-
WSL
- Ubuntu 18.04
事前準備
# pyenv の依存ライブラリのインストール
# 引用元: https://github.com/pyenv/pyenv/wiki/Common-build-problems
# Ubuntu/Debian:
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl
# Alternative of libreadline-dev:
sudo apt install libedit-dev
pyenvインストール
brew install pyenv
pyenv install x.x.x
pyenvのwikiに記載されている Ubuntu の方法+αで python のインストールで警告などが解消できた。
https://github.com/pyenv/pyenv/wiki/Common-build-problems
- wiki記載のライブラリを apt でインストール
- CFLAGS、LDFLAGS、LD_LIBRARYの設定
2についてはググっていた限り
CFLAGS="#####"
LDFLAGS="#####"
pyenv install 3.7.2
pyenvのwikiを始め、シェル変数としての代入を記載をしているサイトが多く、
どうしても readlineモジュールについてだけはコンパイルで
WARNING: renaming readline since importing it failed: libreadline.so.8: cannot open shared object file: No such file or directory
と出てしまい、python本体のビルドは成功するものの、最後に表示される
WARNING: The Python readline extension was not compiled.
という1行が残り続けもやっとしていたがpyenv install
実行前にシェル変数ではなく、記事冒頭の環境変数へ代入で解消できた。