GitにflaskプロジェクトをPUSHする、参考サイトのメモとファイルの除外等設定

flaskアプリ、GitHubで共有しておきたいです。

venvとか、共有しない方が良いファイルやフォルダもあるみたいだね〜

前回、flaskのミニマムなアプリケーションを作成しました。

ぱんだクリップ
忙しい人のためのflaskアプリ、もっとも質素でミニマムなflaskアプリ(pytest含む設定) | ぱんだクリップ flaskアプリをミニマムにまとめてみました。 今までの復習になりますな flaskのアプリケーション構成をチュートリアルで勉強してきましたが、なんだか色々な要素があってよ...

GitHubをリモートリポジトリとしていつでも、別マシンなどから同じ構成を引っ張れるようにしようと思い、gitでGitHubへPUSHしようと思いました。しかし、Pythonには仮想環境のvenvや、macで作業した場合の.DS_storeファイルなど、特定のファイルを除外したり、色々と面倒な手順がありました。そのため、flaskのプログラムをGitにPUSHする一連の流れをメモしました。

こんな人の役に立つかも

・GitへflaskプロジェクトをPUSHしたい人

目次

gitコマンドインストール確認

次のコマンドでgitがインストールされているかどうかを確認します。

$ git --version

インストールされていない場合、インストールを行います。

(gitのインストール方法は省きますm__m)

これから操作するGitユーザーの名前とメールアドレスを登録しておきます。

$ git config --global user.name "任意のユーザー名"
$ git config --global user.email "任意のメールアドレス"

Gitで共有するための準備

リモートリポジトリ(GitHubリポジトリ)を準備

githubにて、リモートリポジトリを作成しておきます。

作成後は、https://〜というリポジトリのURLが発行されますので、これをコピーしておきます。

gitで無視するファイルを指定

gitコマンドでは、「.gitignore」というファイルに無視するファイルやフォルダを指定することでリモートリポジトリにPUSHしないデータを指定することができます。

リモートリポジトリにアップロードすべきではないファイルは次のものがあります。

・macで生成される「.DS_store」ファイル

・Pythonが生成する「__pycache__」

・venv仮想環境関連のファイル

などがあります。

隠しファイル、「.gitignore」を作成します。

$ touch .gitignore

内容は次のように記載します。

.DS_Store

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/

これらの除外するべきファイル、は、GitHub公式に具体的に示されているようです。Pythonについて除外するべきファイル、フォルダの記載は以下のページから引用させていただきました。

あわせて読みたい
gitignoreを書く時に便利なテンプレート集 gitignoreを記述する時に便利なテンプレート集の紹介

requirements.txtの作成

venvを除外するということは、PULLしたマシンでもパッケージをインストールし直さなければいけません。そこで、requirements.txtというファイルで、パッケージの一覧を取得することができるようにしておきます。

以下のように仮想環境に入り、requirements.txtを作成します。

$. venv/bin/activate
(venv)$ pip freeze > requirements.txt
(venv)$ deactivate

requirements.txtに関して参考にさせていただいたサイトはこちらです。

あわせて読みたい

Gitローカルリポジトリを設定

Gitで共有したいプロジェクトフォルダで作業を行います。今回はflaskアプリケーションをリモートリポジトリ(GitHub)で共有したいので、flask-minimumのフォルダへ移動しました。前回の記事にて作成したミニマムなflaskアプリケーションです。

gitのローカルリポジトリを初期化

cdで「flask-minimum」に移動して次のコマンドで初期化します。
※私は今回のアップロードするプログラムを「/Python/flask-minimum」という階層に作成しています。

$ cd /Python/flask-minimum
$ git init

initすることで、「.git」隠しフォルダが作成されます。

※macのファインダーで隠しファイルを見るためには、「cmd + shift + .」を押すと確認できます。

次のコマンドで、リモートリポジトリ(先ほど設定したGitHubのURL)を設定します。これで、originという名前でリモートリポジトリが登録されます。

$ git remote add origin <コピーしたGitHubのリポジトリURL>

addとcommitを行います。フォルダ全体に含まれる全てのファイルを共有したいので、次のようなaddコマンドを実行します。

$ git add .

そして、ローカルリポジトリにcommitします。「”first commit~~”」は任意コメントですので、自由です。

$ git commit -m "first commit of minimum flask application"

次のようにローカルリポジトリに作成されるファイルの一覧が出ますので、不要なファイルがリポジトリに登録されていないかを確認する必要があります。

「.gitignore」が効いているようですね。

gitローカルリポジトリのリセット(間違えた時)

除外ファイル設定など、何回か試していた時、gitローカルリポジトリをリセットしたいタイミングがありました。そんな時は、gitローカルリポジトリを削除して再度「git init」「git remote add」「git add」「git commit」を行いました。次のように、rmコマンドで.gitを削除しました。

$ rm -rf .git

削除方法は以下のサイトを参考にさせていただきました。

https://www.codeadvisor.jp/entry/2018/02/18/124557

GitHubにPUSH

ここまできたら、あとはリモートリポジトリであるGitHubにPUSHするだけです。

$ git push origin master

このような形になりました。

これでいろんなマシンでPULLし放題です。

PULLした時は、仮想環境venvをPULLした階層で作成し、requirements.txtからパッケージを全て取得します。

(venv)$ pip install -r requirements.txt
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次