はじめに
タイトル通り、WSL2上でUbuntu20.04でpyenvとpipenvによるPython開発環境を作ろうと色々な記事通り進めたところいくつかハマったので備忘録
目標
ローカルを汚さずにPython自体のバージョンをpyenvで、プロジェクトごとの管理をPipenvで出来る状態
環境
- Win10(WSL2)
- Ubuntu20.04
- zsh(他のシェル使ってる方は適宜読み替えてください)
目次
1. pyenv
まずこちらを参考にpyenvのインストール
$ sudo apt update
$ sudo apt install -y --no-install-recommends build-essential libffi-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
次にpyenv関連のパスを通す
$ echo -e "# pyenv paths" >> ~/.zshrc
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ source ~/.zshrc
と、ここでトラブル発生(この後は試行錯誤の過程を書いてるだけなので必要ない場合はここまで読み飛ばしてください)
WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.
ググっても解決策出てこないので、表示に従ってとりあえずpyenv init
してみることに
# Load pyenv automatically by appending
# the following to ~/.zshrc:
eval "$(pyenv init -)"
# And the following to ~/.profile:
eval "$(pyenv init --path)"
# Make sure to restart your entire logon session
# for changes to ~/.profile to take effect.
何やら「.zshrcだけじゃなくて.profileにeval "$(pyenv init --path)"
追記しといてね」的な事らしい
$ echo 'eval "$(pyenv init --path)"' >> ~/.profile
$ source ~/.profile
無事エラー表示が消えたと思いきや新しいシェルを立ち上げるとまだエラーが出る...
ここでさっきのWARNING: `pyenv init -` no longer sets PATH.
を見直してみると「pyenv init -
する必要ないよ」ということなのでは...?と思い、.zshrcからeval "$(pyenv init -)"
を消してみるとエラーも消えてパスも通った!!
公式にも特にこういったやり方は見当たらなかった(見落としてるだけかも)のでなんか知ってる方居たらコメントお願いします
自分の環境での結論
$ sudo apt update
$ sudo apt install -y --no-install-recommends build-essential libffi-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev git
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo -e "# pyenv paths" >> ~/.zshrc
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc
なんかエラー出るなと思ったらeval "$(pyenv init -)"
を消してみるといいかも
2. Pipenv
基本的にはpip install pipenv
で良いんですが、自分の環境だとcommand not found
になっちゃいました
結論から言うと、root権限でinstallすればおkでした
ついでに、仮想環境をプロジェクト直下に作るよう設定
$ echo -e "# pipenv property" >> ~/.zshrc
$ echo 'export PIPENV_VENV_IN_PROJECT=1' >> ~/.zshrc
$ source ~/.zshrc