はじめに
はじめましてa-min3150です。エンジニアへの転職を目標に学習中です。
アウトプットのためEnvaderで学習したこと、ハマったことなどを書いていきたいと思います。
今回の学習内容
EnvaderでPythonの環境構築について学習したのでアウトプットします。
今回は第6回目でmacOSでのrequirements.txt
の使い方についてです。
第1回(Pythonとは)はこちら
第2回(pyenvについて)はこちら
第3回(pipについて)はこちら
第4回(venvについて)はこちら
第5回(virtualenvについて)はこちら
第7回(git cloneの使い方)はこちら
requirements.txtとは
第3回目のpipの使い方の時にも出てきたrequirements.txt
ですがこれは「パッケージの名前とバージョンの一覧の控えを取っておく」ものであると解説しました。
いつ使うのか?
GitHubに共有したり、本番環境に反映させるときなどに、パッケージの名前とバージョンも共有しておく必要がある場合にrequirements.txtが利用されます。
共有しないと環境が変わった時にいちいちバージョンを確認して一つずつインストールしたり、正常に動作しなかったりと様々な問題が発生しかねません。
パッケージによっては、他のパッケージのあるバージョンには対応しておらず、アップデートしたときに正常に動作しない場合もあるため、正常に動作したときのバージョンで必ず作成しておきましょう。
(ファイル名は特に決まってないですが、基本的にはrequirementsという名前が使用されます)
ファイルの作成
ターミナルでファイルを作成したディレクトリに移動してコマンドを実行します。
pip freeze > の後にrequirements.txtとすることでファイルを作成できます。
$ pip freeze > requirements.txt
# requirements.txt の中身
alembic==1.7.5
app==0.0.1
bcrypt==3.2.0
captcha==0.3
certifi==2021.10.8
cffi==1.15.0
charset-normalizer==2.0.9
virtualenv<20.10.0, >19.0.0
・・・・・・
バージョンを指定しない場合はインストールするときに最新版がインストールされます。
==, >= , >, <=, <, != などでバージョンを指定し、カンマで区切ることでAND 条件を指定し二つのバージョンをインストールできます。
ファイルのインストール
他の環境に移した時やcloneしたとき、バージョンを以前の状態に戻したいときにrequirements.txtをインストールします。
pip install
の後に -r
オプションと requirements.txt
とすることでパッケージと指定したバージョンを一括でインストールできます。
$ pip install -r requirements.txt
macOSで実践してみる
第3回目の時にFlaskをインストールした時に作成したrequirements.txt
があるのでこれを別のディレクトリにコピーして中身のパッケージをインストールしてみましょう。
デスクトップ上に「test」というディレクトリを作成し、そこに移動する。
macOS:Desktop user$ mkdir test && cd $_
cp
コマンドを使って第3回目で作ったディレクトリの中からrequirements.txt
を「test」ディレクトリへコピーする。
(cp
コマンドの使い方についてはこちら)
macOS:test user$ cp ../test_venv/requirements.txt ./
macOS:test user$ ls
requirements.txt
requirements.txtの中身を確認する。
macOS:test user$ cat requirements.txt
click==8.1.2
Flask==2.0.3
itsdangerous==2.1.2
Jinja2==3.1.1
MarkupSafe==2.1.1
Werkzeug==2.1.1
仮想環境を起動する。(今回はvenv
)
macOS:test user$ python -m venv venv//「venv」という仮想環境を作成。
macOS:test user$ ls//「venv」というディレクトリが作成されたことを確認する。
requirements.txt venv
macOS:test user$ source venv/bin/activate//仮想環境を起動する。
(venv) macOS:test user$ //(venv)となり、起動できた
仮想環境を起動した状態でrequirements.txt
をインストールすることで特定のディレクトリのみにインストールされるため、システム全体に影響しないようになります。
(venv) macOS:test user$ pip install -r requirements.txt
pip list
でインストールされたものを確認する。
(venv) macOS:test user$ pip list
Package Version
------------ -------
click 8.1.2
Flask 2.0.3
itsdangerous 2.1.2
Jinja2 3.1.1
MarkupSafe 2.1.1
Werkzeug 2.1.1
このようにrequirements.txtファイルを使ったインストールを行えるようになれば、チーム開発をする時に他の人が作った環境をそのまま自身のPCへ作ることができるようになるので大変便利です。
まとめ
今回はrequirements.txtファイルについて解説しました。
ファイルの作成
$ pip freeze > requirements.txt
ファイルのインストール
$ pip install -r requirements.txt
とても大事なファイルなので、しっかりと使い方や役割を覚えておきましょう。
次回はgit cloneの使い方についてです。
引用サイト
- Envader(エンベーダー):https://envader.plus/
- コース一覧:https://envader.plus/course
- Python環境構築コース:https://envader.plus/course/8
- 今回解説したコースシナリオ:https://envader.plus/course/8/scenario/1073