🧙🏼‍♂️

Python:私の開発環境構築手順(venv, git管理)

に公開

0. 前提情報

  • OSはWindowsでもMacでもどちらでも良い。/は適宜\に読み替える
  • 自己開発プログラム(GithubとかからCloneしない)
  • プロジェクトフォルダを設定し、venvで管理する
  • ここではディレクトリとフォルダは同じ意味として扱う
  • 開発IDEはVScode、バージョン管理システムとしてGitを使う
  • PythonとGitBashは事前にインストールしておく。

1. 新規プロジェクトを作成する

まずはvenvで仮想環境を構築する。ディレクトリ構成は以下の通り

~/プログラム管理フォルダ/
└(Master Project Directory)/ ← プロジェクトを管理するためのマスター
  ├(Project Directory)/ ← ローカルリポジトリ用ディレクトリ
  │    ├ ソースコード
  │    └ 設定ファイルなど
  │
  └(Project Directory).git/ ← リモートリポジトリ

例えば、Hello_Worldというプロジェクト名であれば、
~/PythonProgram/
└Hello_World/
  ├Hello_World/
  │    ├ helloworld_main.py
  │    └ .gitignore
  │
  └Hello_World.git/
と、こんな感じのイメージになる。以降はこのディレクトリ名を例として使っていく。

2. venvでプロジェクトディレクトリを構築する

VScodeを開き、Ctrl+Shift+@でターミナルを起動する。
VScodeの「フォルダーを開く」で、~/PythonProgram/Hello_World/Hello_Worldを開いておく

次のコマンドで、ローカルリポジトリをvenvで作る

$ cd ~/PythonProgram/Hello_World/Hello_World
$ python -m venv Hello_World

よくPython -m venv venvと紹介されているが、コマンドの使い方を把握しにくいので、
敢えてディレクトリ名を変えてある。
これで"Hello_World"ディレクトリが作成され、仮想環境が準備できた。

ここで、一緒に.gitフォルダも作っておく。

$ mkdir ../Hello_World.git

まずはローカルリポジトリに移動し、git initする

$ cd ~/PythonProgram/Hello_World/Hello_World
$ git init

これでもうHello_Worldフォルダはgitの管理下に入る。
試しにVScodeで.gitignoreファイルを作成・開いて修正すれば、
VScodeのソース管理タブで変更履歴が表示されているはずだ。
そのまま変更ファイルの右にある「+」ボタンを押して変更をステージすれば、
後はコミットメッセージを書いて「コミット」ボタンを押すだけである。

3. リモートリポジトリも整備する

自分のPCにリモートリポジトリを作った場合は、そこの初期化作業を行っておく。

$ cd ../Hello_world.git
$ git init --bare --shared

これで準備は整う。ここで、一度なにかをコミットしておくと良いだろう。
その後、以下のコマンドでローカルリポジトリとリモートリポジトリを接続(登録)する

$ git remote add origin ../Hello_wolrd.git

originはリモートリポジトリの名前なので、masterでもmainでも何でも良いっちゃ良い。
VScode上でコミットしてあると「Branchの発行」ボタンが表示されいてるはずなので、それを押す。

4.プログラムを組む

ここまでやった時点でHello_World/の中身は空ではないので、
他からgit cloneでこのフォルダを上書きすることはできない。
ちなみに、逆にこの環境をgit cloneしようとするとvenvの環境設定そのものをcloneする事になる。
すると、その後にpipなどでライブラリをインストールすると
clone元のlibフォルダへライブラリをインストールしてしまうので注意。
(多分これは同じPC内でCloneすることによる弊害だと思う)
venvの環境設定をちゃんと変更すればこの問題は起きない気がするが、
そんなことをしている人や情報があまり出回っていないように思うので非推奨なのだろう。

プログラムを動かしたりする場合はちゃんと仮想環境をアクティブ化する。
終了するときはdeactivateしておくと良い。

$ cd ~/PythonProgram/Hello_World/Hello_World
$ ./Script/activate
(〜作業中〜)
$ deactivate

おまけ

proxy環境下でのpipインストール作業

$ pip install --proxy http://[USER_ID]:[PASSWORD]@[PROXY_ADDRESS]:[PORT] [INSTALL PACKAGE]

開発環境を複製するときの流れ

$ pip freeze > requirement.txt      //パッケージを出力
$ mkdir copy_project                //親フォルダ作成
$ cd copy_project                   //親フォルダに移動
$ python -m venv copy_project       //ローカルリポジトリを生成
$ git init                          //リポジトリ初期化
$ cp requirement.txt ~/PythonProgram/copy_project/copy_project/
$ pip install -r requirement.txt    //ローカルリポジトリにパッケージファイルをコピー
$ pip freeze                        //インストールされたパッケージの表示

Discussion