この記事について
いつも忘れてしまうので手早く探せるようにメモ。
環境はdebian系のubuntu 20.04です、他の環境をお使いの場合はこの記事を参考にしながらご自身で調べてください。
- pyenvを使った方法と使わない方法両方あります。
- pyenvとはpythonを複数バージョンを入れて切り替えてくれる便利ツールです
- 具体的にはgithubページをご覧ください。
pyenvを使わない方
まずはpythonとpipを入れます
-
apt install python3 python3-dev python3-venv
でまずpython関連を入れます- そしてpipをインストールします。色々な方法はありますが、ここでは一番簡単な方法を使う。
- まず
apt install wget
でwgetを入れます。 - そして
wget https://bootstrap.pypa.io/get-pip.py
でpipを入れるためのpython scriptをダウンロードします - 最後に
python3 ./get-pip.py
で先ダウンロードしたscriptを実行して実際にpipを入れます - root userでpipを入れるとvenv使ってくださいという警告が出るが、別にインストールに失敗したわけではありませんので、大丈夫です
- まず
- そしてpipをインストールします。色々な方法はありますが、ここでは一番簡単な方法を使う。
入れたら実際にvenvを作ります
-
mkdir <your_work_dir_name> && cd <your_work_dir_name>
で作業フォルダーを作って入ります -
python3 -m venv <your_venv_name>
でvenv作成 -
source ./<your_venv_name>/bin/activate
でvenv起動 - ターミナル先頭に
(<your_venv_name>)
のようなものが付いていれば成功です - 一応
pip3 --version
で確認、pathがvenvになってたら成功
venvから抜ける
-
deactivate
を直接実行すれば抜けれる - 効かない場合は
source deactivate
をお試しください
pyenvを使って同時に複数バージョンのpythonとvenvを管理する
まずpyenvを入れます
色々な方法はありますが、一番簡単なを使います
-
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
でpyenvを入れます - 入れたらおそらくpathが通ってないので、
~/.bashrc
というファイルを書き換えてpathを通します- 手持ちのvimやviなどの編集ツールを使ってコードを追加しましょう。追加するコードは4行です。
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
- 以上4行を追加
- これでpyenvが使えるようになったはずです。
pyenv --version
で確認してみましょう
そしてpyenv経由でpythonを入れる
真っ白な環境だと色々な依頼関係が入ってなかったりするので、適切にaptを使って下記のものインストールしてください
sudo apt install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
そして入れたら pyenv で python をインストールすることができます
-
pyenv install 3.10.4
などで特定なバージョンを入れることができます、今回は3.10.4を入れます
pyenv使ってvenvを作る
-
pyenv virtualenv 3.10.4 <your_venv_name>
でvenvを作ります、作るときは使用するpythonバージョンとvenv_nameを指定- pyenvを使用するときはディレクトリーを作らなくても直接venvを作成できます
- venvファイルは
~/.pyenv/versions/<your_venv_name>
にあります
venvの起動
pyenvでのvenvはpythonバージョンとして扱われるので、切り替える時もpython切り替えと同じです。
- サブディレクトリーだけでvenvを使う場合
-
mkdir <your_work_dir_name> && cd <your_work_dir_name>
で作業フォルダーを作って入ります -
pyenv local <your_venv_name>
でこのディレクトリーでvenvを使用することを言明 - そして実際に
.python-version
というファイルが作られるので、この中にvenvの名前が入ってます - これでこのサブディレクトリーに入ったら自動的にvenvに切り替えてくれて、抜けると自動的にvenvから抜けます
- 試しに
cd ..
でディレクトリーを抜けましょう、実際にvenvからも抜けたはずです
-
221116追記
macOS 13(zsh + apple sillicon)
brew経由でpyenvを入れるときに自動的にvitrualenvのpluginを入れてくれないので、手動でbrew install pyenv-virtualenv
入れることができます
windows10(powerShell)
- PowerShell Script経由で導入したらpython cmdはシステムにインストールしていた旧バージョンのpythonと被ってしまったためpyenvで指定したとしても
gcm python | fl
はsystemを指してしまう - 解決法としてはpathから
C:\Users\<your_user_name>\Local\Programs\Python\
に関するpathを全部消したら自動的にpyenvを使ってくれた - virtualenv pluginはwindowsをサポートしていないらしいので、以下の手順を踏む必要がある
- まず
mkdir <your_dir_name>
でvenvのフォルダーを置くディレクトリを作ります -
cd <your_dir_name>
で先作ったディレクトリに入ります -
pyenv local 3.10.4
もしくはpyenv shell 3.10.4
でpython versionを指定する -
python -m venv <your_venv_name>
でvenvを作る -
.\<your_venv_name>\Scripts\Activate.ps1
で環境を起動します -
gcm python | fl
で検証します。Pathが先作ったvenvになってたら成功です - 念のため
pip --version
なども使って検証しましょう。同じくpathがvenvになってたら成功です- 筆者の環境だとvenvの中に入るとpython3,pip,pip3などのコマンドが効かなくなります、pythonだけが叩ける環境になってしまう
- 別にエラーが出るとかではないだが、
python3 --version
、pip --version
、pip3 --version
などのコマンドが一切反応しなくなり、なにも出力がないという変な状態です。 -
gcm pip | fl
で見てもちゃんとpathが通っているけどね。。。 - 解決法としてはpipを使うときはpipじゃなくて
python -m pip
を使うとできるじゃできるけど、一向に謎です - わかる人がいましたらコメントお願いいたします。。。
- 抜けるときは
deactivate
で抜けます
- まず