New サムネイル 東京都の各地域における犯罪件数一覧と治安率ランキング:最も治安のいい街は狛江市、羽村市、稲城市 New サムネイル pandasのDataFrameをmatplotlibで図にするときにlegendを消す New サムネイル 日本の区一覧とよく使われる区名の頻度:日本には南区が13区もある

Pythonアプリをデプロイするときのrequirements.txtの作り方

広告

まずは結論から。Pythonアプリをデプロイするときはrequirements.txtを用意してサーバーに送る。requirements.txtは、そのアプリが必要とするPythonの環境が書かれている。

例えばDjangoのアプリをサーバーに送るときは、そのアプリのrequirements.txtに次を書いておく。

dj-database-url==0.5.0
Django==2.0.7
django-heroku==0.3.1
psycopg2==2.7.5
pytz==2018.5
whitenoise==3.3.1

これはどのDjangoアプリも必要とするPython環境である。サーバーはここに書かれた環境をもとに、Pythonの環境を切り替える。ここでサーバーはHerokuなどを想定している。

↑のリストはもちろん手作業で打たない。次のコマンドで自動的にrequirements.txtを作る。

pip freeze > requirements.txt

このコマンドを打つときは、カレントディレクトリ(ターミナルの現在地)をアプリのディレクトリにする。Djangoであればアプリディレクトリ直下のmanage.pyと同じ階層に置く。

ここでpip freezeはもちろん仮想環境venv内で行う。つまりこのコマンドは、あなたの仮想環境をそのままrequirements.txtにすることである。

以下はPythonアプリをはじめて作る人のためのメモ。

自分のマシンとサーバーは異なる環境を使っている

アプリを開発するときは

  • 自分のマシンでアプリを作る
  • そのアプリをサーバーに送る(デプロイという)

という手順をとる。開発者は「自分のマシン」をよくローカル環境と呼ぶ。ローカル環境、つまり自分のマシンはサーバーと環境が異なる。

ローカル環境はPython2系だが、サーバーはPython3系かもしれない。その逆もありうる。ローカル環境はDjangoをインストールしているが、サーバーはしていない、という可能性もある。

つまりrequirements.txtはローカル環境で使っているPythonの環境(psycopg2はバージョン2.7.5を使っている、といった情報)をサーバーに知らせる役割を持つ。

pip freeze

pip freezeをターミナルで打つと、その仮想環境で用意しているパッケージとバージョン一覧が出てくる。つまり

pip freeze > requirements.txt

はその結果をテキストにしているだけにすぎない。

広告

広告

広告

コンピューター コンピューター
プログラミング プログラミング
数学 数学
英語 英語
国語 国語
理科 理科
社会 社会

Python入門

Python入門

化学入門

化学入門

漢字辞典

漢字辞典

整数辞典

漢字辞典

Lord Candy

Lord Candy