WSLのpipenvでpython3.7を使う
Windowsネイティブで動かないpythonプロジェクトを動かすために、
WSLでpythonを導入しましたが、けっこう嵌ったので正常に動く方法をここに記します。
TL;DR
pyenvに全てを委ねよ。さすれば救われん。
WSLの一番痛いポイントは、pipenvがWindowsネイティブのpython.exeを掴みに行って死ぬところです。
これじゃぁ救われねぇ…
2019/12/13追記: pyenv反証記事*1が色々あるので*2、pyenv一択に断言することを辞めます。誰かこの戦争を終わらせてくれ…
セットアップ手順(正常系)
pythonのインストール
まずpythonをインストールします。
※ここは好みの問題ですが、本稿ではpython3.7を導入しています。
sudo apt install python3.7 python3.7-dev sudo apt install python3-pip sudo ln -s /usr/bin/python3 /usr/bin/python sudo ln -s /usr/bin/pip3 /usr/bin/pip sudo ln -fs /usr/bin/python3.7 /usr/bin/python3
pyenvのインストール
次にpyenvをインストールします
curl https://pyenv.run | bash
.bashrcファイルを更新します。
vim ~/.bashrc
で、以下を追記しましょう。
export PATH="${HOME}/.pyenv/bin:${PATH}" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
pyenv,pipenvで使うライブラリのインストール
sudo apt install zlib1g-dev sudo apt install libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
pipenvのインストール
sudo pip install pipenv sudo pip install pre-commit
pipenvの運用
運用で使うバージョンのpythonをインストール
pyenv install 3.7.5
作業ディレクトリで使うバージョンを指定
pyenv local 3.7.5
pipenvを実行
pipenv install
よくはまる地獄集
pipenvがvirtualenvの構築に失敗する
Windowsネイティブのpythonを掴みに行ってしまう
pyenv local 3.7.5
python3.7環境のvirtualenv構築に失敗してしまう
WSLの apt install python3
でインストールされるpythonはpython3.6.7です
python3.6で3.7のvirtualenvを作ろうとすると失敗します(なんで?)
pythonを3.7にしましょう
pyenv local 3.7.5
もしくは
sudo apt install python3.7 python3.7-dev sudo apt install python3-pip sudo ln -s /usr/bin/python3 /usr/bin/python sudo ln -s /usr/bin/pip3 /usr/bin/pip sudo ln -fs /usr/bin/python3.7 /usr/bin/python3