高校化学2924392 views
小学社会310485 views
高校国語788336 views
いろは3010814 views
英語613639 views
小学理科719870 views
MathPython497343 views
高校物理160203 views
雑学1473612 views
ヒストリア290598 views
Help
Tools
NewsSpreadsheetCalendarBookkeepingMarkdown TablesLanguage Model NewsSlidesTier ListPen ToolIllustrationCrayonWatercolorPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchSwirl EffectLine ArtOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksCherry BlossomWater RippleWater SplashBreaking GlassGlass TextureFabric TextureWood GrainMarble TextureBrick Wall TextureMetal TextureWashi Paper TextureCardboard TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsRolling DiceCross SectionsMotion PathMechanicsWavesElectromagnetic WavesCapacitorsLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHOrganic Reaction MapPeriodic TableComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseMuscle ContractionHormones and HomeostasisRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic TheoryShogi StrategyPiano Rhythm Game

English

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

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