こんにちは、とりゅふです。今回はPythonの開発環境構築についてまとめました。 本日のテーマはこちら!
Pythonのインストール、ライブラリのインストール自体は簡単ですが、プロジェクト毎に使っているPythonのバージョンが違ったり、ライブラリが違ったりと、環境の管理がなかなか面倒だったりします。
そういったPythonの環境を、
今回はWindowsでUbuntu 20.04を動かし(Windows Subsystem for Linux)、その上にPython仮想環境を構築します。
pyenvとは
Python2.7とPython3.8が自分の端末に同居してしまい、今どっちを使っているのかわからない…とか、このプロジェクトではPython3.6、このプロジェクトではPython3.7といったバージョンの違うプロジェクトがあったとしても、このpyenvを使えばコマンドで簡単に今実行したいバージョンへと切り替えることができます。
venvとは
venvを用いずにそのままpip install
でPYPIパッケージをインストールすると、自分の端末全体の共通の場所にインストールされてしまうため、複数プロジェクトを開発する時のパッケージの管理が非常に大変です。そういった複数環境でもそれぞれ独立した環境を用意し、その環境の中でpip install
することで、異なるバージョンのパッケージを利用することができるようになります。
pyenv、venvを使う環境の構築
WSL2 Ubuntu 20.04のインストール
以下を参考にインストール、設定をします。
https://www.pc-koubou.jp/magazine/40465
Python3がインストール済みなのを確認する
WSLのUbuntu 20.04にはすでにPythonがインストール済みなので、コマンドで確認してみます。
$ python3 --version Python 3.8.5
必要なパッケージのインストール
Pythonの違うバージョンをインストールする際必要になるミドルウェアです。下記コマンドでインストールします。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install -y python3.8-venv gcc make build-essential libssl-dev libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libffi-dev
pyenvのインストール
以下のコマンドでインストールします。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo -e 'eval "$(pyenv init --path)"' >> ~/.bash_profile
Ubuntuを再起動すると、pyenvが使えるようになります。
pyenvでPythonの別バージョンをインストールする
Python3.7.11をインストールしてみます。
$ pyenv install 3.7.11
インストール後、pyenv versions
でインストールされているPythonのバージョンの一覧を確認できます。
*
マークが現在有効となっているPythonのバージョンです。system
とあるのが、元々システムにインストールされていたPythonのバージョンで、その下の3.7.11
が、先程pyenv install
でインストールしたバージョンです。
※/home/truefly
の部分が自分のユーザのホームディレクトリです。
$ pyenv versions * system (set by /home/truefly/.pyenv/version) 3.7.11
この時点ではまだpythonのバージョンはシステムにインストールされた状態のままです。
$ python3 --version Python 3.8.10 $ python --version pyenv: python: command not found The `python' command exists in these Python versions: 3.7.11 Note: See 'pyenv help global' for tips on allowing both python2 and python3 to be found.
pyenv local [version]
で、今いるディレクトリ配下のPython環境を切り替えます。.python-version
というファイルが作成されます。
$ pyenv local 3.7.11 $ pyenv version 3.7.11 (set by /[カレントディレクトリ]/.python-version) $ cat .python-version 3.7.11
python --version
で、pythonコマンドが使えるようになっていること、バージョンが3.7.11
になっていることを確認します。
また、1階層上のディレクトリに移動すると、pythonコマンドが使えないことも確認します。
$ python --version Python 3.7.11 $ cd .. $ python --version pyenv: python: command not found The `python' command exists in these Python versions: 3.7.11 Note: See 'pyenv help global' for tips on allowing both python2 and python3 to be found.
ディレクトリ配下ではなく、Ubuntu全体でバージョンを変更したいときは、pyenv global [バージョン]
を実行します。
元に戻す場合は、pyenv global system
を実行します。
venvの仮想環境を実行する
.python_version
のあるディレクトリで、以下のコマンドを実行し、venv仮想環境を作成します。
.venv
というディレクトリが作成されます。
$ python -m venv .venv
以下のコマンドで、venv仮想環境に入ることができます。
$ source .venv/bin/activate
venv仮想環境の中で、pip install [ライブラリ]
を実行することで、仮想環境内にライブラリをインストールできます。
$ pip install requests
これで開発環境の準備は完了です!
まとめ
myproject
という新規のPythonプロジェクトを作成するときの手順です。
以下のコマンドを上から順に実行してあげればOKです。
$ # 新規ディレクトリ作成 $ mkdir myproject $ cd myproject/ $ # Gitリポジトリ初期化 $ git init Initialized empty Git repository in /mnt/c/git/works/myproject/.git/ $ # pyenv環境切り替え(インストール指定ないバージョンがあればインストールする) $ pyenv local 3.7.11 $ python --version Python 3.7.11 $ # venv環境作成 $ python -m venv .venv $ # .venvディレクトリを.gitignoreに追加 $ echo ".venv" >> .gitignore $ # venv環境切り替え $ source .venv/bin/activate
これで必要に応じてPythonのバージョンを切り替えたり、パッケージの管理を独立させて管理することができるようになりました。
開発環境構築って毎回プログラミングを始める時、あるいは新しい職場でプロジェクトに参加する時、苦戦しがちではありますが、今回ご紹介した記事が自分や自分のチームの環境構築手順作成の一助になれば幸いです。