2023年10月:git for windows で git bash 環境を整える

2023年10月:git for windows で git bash 環境を整える

2023/10/03 20:30:00
Program
Windows, Git, Tortoisegit

前提 #

  • windows10pro 64bit 環境を想定
  • 2023/10/01 時点で最新と思われるものをインストールする
  • git バージョンは git version 2.42.0.windows.2
  • トータスgit のバージョンは TortoiseGit 2.14.0.0

準備 #

  • git for windows を以下からダウンロードしておく
    https://gitforwindows.org/
    ※ ここでは Git-2.42.0.2-64-bit.exe をダウンロード
  • TortoiseGit を以下からダウンロードしておく
    https://tortoisegit.org/download/
    ※ ここでは TortoiseGit-2.14.0.1-64bit.msi をダウンロード

git for windows をインストールする #

※インストール順番は、git for windows → TortoiseGit の順で行うこと。

  1. Git-2.42.0.2-64-bit.exe を実行する
    実行すると以下の画像が表示される
    Nextボタン押下
    ※基本的に以後も指示に従って進めるだけで問題なし。気になる箇所はコメント入れてあるので参考に。

  2. インストール先指定
    特段変更する必要はない
    Nextボタン押下

  3. コンポーネントの選択
    特段変更する必要はないが、Windows Terminal で git bash を使いたい場合はチェックいれる
    Nextボタン押下

  4. windowsスタートメニュ設定
    特段変更する必要はない
    Nextボタン押下

  5. エディタ設定
    特段変更する必要はない。vimが嫌な人は変更したほうがいい
    Nextボタン押下

  6. 初期ブランチ設定
    最近のトレンドはmasterでなくmainにしたほうがいい。(差別用語とかいろいろあるらしい。githubとかはすでにmainになってる)
    Nextボタン押下

  7. コマンドライン設定
    コマンドライン(CMD)、その他の製品でも使えるように
    Git from the command line and also from 3rd-party software
    を選択
    Nextボタン押下

  8. SSH設定
    同梱されているopensshで問題なし
    Use bundled OpenSSH
    を選択
    Nextボタン押下

  9. HTTPS設定
    さきほど選択した同梱されているopensshで問題なし
    Use the OpenSSH library
    を選択
    Nextボタン押下

  10. 改行設定
    リポジトリに登録されある内容に従うべきなので、
    Checkout as-is, commit as-is
    を選択
    Nextボタン押下

  11. ターミナル設定
    bash 使ったほうが遥かに便利なので Use MinTTY(the default terminal of MSYS2)
    を選択
    Nextボタン押下

  12. pull動作設定
    デフォルトで問題ない
    Default(fast-forward or merge)
    を選択
    Nextボタン押下

  13. 資格情報ヘルパ設定
    あとからでも変更できるはずなので、ここでは None を選択しておく
    パスワード管理をGit Credential Manager に任せる場合は、
    Git Credential Manager
    を選択
    Nextボタン押下

  14. 追加オプション設定
    とりあえず、キャッシュは有効、シンボルリンクも有効にしておく
    Enable file system caching(core.fscache=true)
    Enable symbolic links(core.symlinks=true)
    を選択し、Nextボタン押下

  15. 実験的な追加オプション設定

    • 1個目は、winpty 使わずに python,ruby…のコンソールが使えるらしいがバグがある
    • 2個目は、ワークツリーに多くのファイルがある場合にGitコマンドが高速化するらしい

    python は pyenv-win でバージョン管理もできてmsys2でも動作するので、1個目は有効にしたほうがいい。
    2個目は高速化するらしいので、こちらも有効にしておく
    Nextボタン押下

  16. インストール開始

  17. インストール完了

初期設定 #

  1. ユーザ別の作業エリアを作成&設定
    初期状態だと、C:\Users\<ユーザ名> となるので別の場所に設定する
    ここでは C:\home\<ユーザ名> のディレクトリを作成する。
    (ユーザ名はログイン名と合わせておいたほうがいいかも)
    作成したユーザエリアをHOME変数使用して git bash に伝えておく。
    以下がユーザ環境変数に指定する内容

    • 環境変数名:HOME
    • パス: C:\home\<ユーザ名>

    powershell で以下を実施するとHOME環境変数がuserに追加される

    [System.Environment]::SetEnvironmentVariable('HOME', "C:\home\developer","User")
    
  2. git bash を起動しHOMEパスになっているか確認
    windows terminal を利用している場合、C:\Users\<ユーザ名>が指定されているので、
    設定から変更する必要がある。

TortoiseGit をインストールする #

TortoiseSVN に似た GUI が使いた場合にインストールする。
git for windows にも GUI があるので、それで十分な場合は、インストールする必要はないと思う。(そもそも git bash 使う想定)

  1. TortoiseGit-2.14.0.1-64bit.msi を実行する
    実行すると以下の画像が表示される
    Nextボタン押下
    ※基本的に以後も指示に従って進めるだけで問題なし。気になる箇所はコメント入れてあるので参考に。
  2. 情報表示
    特に何もない。
    Nextボタン押下
  3. SSH設定
    git for windows にあわせておく。
    ※TortoiseGit同梱のSSHでいいもいいかもしれないが、あまり TortoiseGit を使うことはないので git for windows に寄せる
    TortoiseGitPlink, based on PuTTY; ….
    を選択
    Nextボタン押下
  4. カスタム設定
    初期値のままでいい。
    32bit関連が不要なら32-bit TortoiseGit Shell… をインストールしなくてもいい
    Nextボタン押下
  5. インストール確認 Installボタン押下
  6. インストール開始
  7. インストール完了 初期設定はしておいたほうがいいので、 Run first start wizard
    を選択
    Finishボタン押下後、初期設定が起動する

初期設定 #

基本的に不要なので、スキップでいい。

以下は参考として記載しておく
ユーザ名とパスワード以外は、git for windows 設定でいい
設定する場合、認証関連を git for windows と合わせたほうがいい

  1. 言語選択
    english が嫌な人は日本語パックを入れると日本語選択できるはず。
    ここでは english のまま進める

  2. あいさつ&情報表示
    無視
    次へボタン押下

  3. git.exe 設定(場所)
    初期値のままで問題なし。
    次へボタン押下

  4. ユーザ設定 Name, Email を入力して
    次へボタン押下

  5. 認証関連設定
    ここでは何も設定しないほうがいい気がする。。。
    なので、キャンセルして終了させておいたほうがいいと思われる。
    ここで決定すると以下のcredential.helper 設定がようわからんwindowsシステム側に依存することになる
    たぶん以下が影響受ける

    credential.helper=manager
    credential.https://dev.azure.com.usehttppath=true

  6. git bash 起動し初期設定内容を確認しておく

    # 作業場所確認
    $ pwd
    /c/home/<ユーザ名>   # <--- 作成したディレクトリパスになっていること
    
    # git config 設定確認
    $ git config --list
    diff.astextplain.textconv=astextplain
    filter.lfs.clean=git-lfs clean -- %f
    filter.lfs.smudge=git-lfs smudge -- %f
    filter.lfs.process=git-lfs filter-process
    filter.lfs.required=true
    http.sslbackend=openssl
    http.sslcainfo=C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
    core.autocrlf=false
    core.fscache=true
    core.symlinks=true
    pull.rebase=false
    credential.helper=store
    init.defaultbranch=main
    user.name=<自分で入力したName>
    user.email=<自分で入力したEmail>
    

    ※ここで気になっているのは、git for windows と TortoiseGit で認証設定やsshが不一致になっている状態かもしれない。。。

git bash 追加設定 #

git config 設定追加 #

以下が追加したほうがいい設定。無視してもいい。
git bash 起動

# 勝手改行コードを無効
$ git config --global core.autocrlf false
# push動作をsimple(デフォルト)
$ git config --global push.default simple
# 大文字小文字を区別(linux向け,windows os区別できない)
$ git config --global core.ignorecase false
# 日本語文字化け対応
$ git config --global core.quotepath false
# pull時にリベースを強制しない(ワーニング削除)
$ git config --global pull.rebase false
# ファイルパーミッションを保持する(linuxだけ、windows,linux共通開発の場合はfalseがいいかも)
$ git config --global core.filemode true
# git 使用者名
$ git config --global user.name "John Doe" 
# git 使用者email
$ git config --global user.email "john_doe@xxx.com"
# editor を vim にする(デフォルトがosによって違う)
$ git config --global core.editor vim
# パスワード保持方法
$ git config --global credential.helper store
# ※たぶんやるべき。初期ブランチを master ブランチからmainに変更
$ git config --global init.defaultBranch main

# git エイリアスコマンド追加
# + 管理外ファイルを表示
$ git config --global alias.untracked 'ls-files --others --exclude-standard'
# + gitignoreファイルを表示
$ git config --global alias.ignored 'ls-files --other --ignored --exclude-standard'
# + グラフ表示
$ git config --global alias.graph "log --graph --date-order -C -M --pretty=format:'<%h> %ad [%an] %Cgreen%d%Creset %s' --all --date=short"

# 内容確認
$ git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
...

bash_profile 設定を追加 #

git bash 起動

bash で git コマンドオートコンプリート関連をダウンロード

# 便利スクリプトをダウンロード
$ curl -o .git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
$ curl -o .git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

bash_profile を作成

# $ vim .bash_profile
# 必要があれば proxy 設定を追加
export no_proxy=localhost,127.0.0.1
export http_proxy=http://172.17.10.xxx:8080
export https_proxy=http://172.17.10.xxx:8080
export ftp_proxy=http://172.17.10.xxx:8080
export HTTP_PROXY=http://172.17.10.xxx:8080
export HTTPS_PROXY=http://172.17.10.xxx:8080
export FTP_PROXY=http://172.17.10.xxx:8080

source .git-prompt.sh
source .git-completion.bash
# プロンプトに各種情報を表示
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUPSTREAM=1
GIT_PS1_SHOWUNTRACKEDFILES=
GIT_PS1_SHOWSTASHSTATE=1
export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[1;33m\]\w\n\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

alias ls='ls --show-control-chars --color'
alias ll='ls -la --show-control-chars --color'
alias la='ls -la'

LS_COLORS='di=34:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90'
export LS_COLORS
export LC_MESSAGES=C

# 以下を実施すると、コマンド履歴が即時 .bash_history に保存される。複数シェル起動時も.bash_historyに保存されるので履歴共有できる
# また、fzf も .bash_history を参照するので便利になるはず。ただし、各シェルでの履歴ではなくなる。
# (基本は最後に終了したシェルの内容が.bash_historyに記録される仕様)
shopt -s histappend
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"

pacman を使えるようにする #

windows管理者権限で git bash を起動すること

# 作業エリア作成と移動
$ cd ~
$ mkdir tmp
$ cd tmp

# git sdk 取得
$ git clone --depth=1 https://github.com/git-for-windows/git-sdk-64 gfw-sdk

# pacman に必要な内容をコピー
$ cp gfw-sdk/usr/bin/pacman* /usr/bin/
$ cp -a gfw-sdk/etc/pacman.* /etc/
$ mkdir -p /var/lib/
$ cp -a gfw-sdk/var/lib/pacman /var/lib/
$ mkdir /usr/share/makepkg/
$ cp -a gfw-sdk/usr/share/makepkg/util* /usr/share/makepkg/

# pacman db チェック
$ pacman --database --check
error: file owned by 'libreadline' and 'mingw-w64-x86_64-git-extra': 'etc/inputrc'
No database errors have been found!

# Git for Windowsの公開鍵を追加し信頼する
$ curl -L https://raw.githubusercontent.com/git-for-windows/build-extra/master/git-for-windows-keyring/git-for-windows.gpg \
| pacman-key --add - \
&& pacman-key --lsign-key 1A9F3986
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10816  100 10816    0     0  30452      0 --:--:-- --:--:-- --:--:-- 30382
==> Updating trust database...
gpg: next trustdb check due at 2023-12-30
  -> Locally signed 1 keys.
==> Updating trust database...
gpg: next trustdb check due at 2023-12-30

# pacman 確認
$ pacman --version

 .--.                  Pacman v6.0.2 - libalpm v13.0.2
/ _.-' .-.  .-.  .-.   Copyright (C) 2006-2021 Pacman Development Team
\  '-. '-'  '-'  '-'   Copyright (C) 2002-2006 Judd Vinet
 '--'
                       This program may be freely redistributed under
                       the terms of the GNU General Public License.

git bash(msys2)環境に追加した方がいいツール群 #

tig インストール #

windows管理者権限で git bash を起動すること

$ pacman -S tig

$ vim ~/.tigrc
# diff-highlight は設定が必要なんでやめる。以下が参考になるけど、うまく動作しないと思われる。。。
# - Git for Windows だってきれいな差分を見たい
#   https://qiita.com/tomoki1207/items/68d5d8c71fd31bac7451
# # 差分表示に diff-highlight を使う (要 tig 2.2.1 以降. diff-highlight が $PATH にあること)
# set diff-highlight = true

# カラー設定
# カーソル
color cursor black cyan
# diff-view で境界が見やすくなるように変更
color  diff-header       default magenta
color  diff-chunk        black   white

# tig 確認
$ tig --version
tig version 2.5.8
ncursesw version 6.4.20221231
readline version 8.2
PCRE2 version 10.42 2022-12-11

bashにコマンド履歴(fzf)インストール #

peco や percol で対応する方法を探しが windows git bash(msys2) では面倒なので fzf で対応する
以下の手順で簡単に導入可能で、同じキーバインド Ctrl + r で履歴呼び出しと絞り込みが可能となる

fzf インストール

$ pacman -S mingw-w64-x86_64-fzf

bash_profile に fzf キーバインドを設定する

$ vi ~/.bash_profile

..
# 以下を追記
source /mingw64/share/fzf/key-bindings.bash
export FZF_DEFAULT_OPTS="--bind=ctrl-k:kill-line"
...

反映する

source ~/.bash_profile

rsync インストール #

rsync をインストールしても msys-xxhash-0.dll がないといわれるので、
gfw-sdk/usr/bin/msys-xxhash-0.dll を、C:\Program Files\Git\usr\bin にコピーする必要がある

windows管理者権限で git bash を起動すること

# gfw-sdk を clone したディレクトリに移動する
$ cd ~/tmp

# gfw-sdk\usr\bin\msys-xxhash-0.dll を C:\Program Files\Git\usr\bin\. にコピーする
$ cp gfw-sdk/usr/bin/msys-xxhash-0.dll /usr/bin/.

# rsync install
$ pacman -S rsync
$ rsync

emacs インストール #

残念ながら、emacs は pacman でインストールは可能だが、emacs初回起動時にelpa等のパッケージを取得する段階で、GnuTLS library 関連エラーが発生する
仕方がないので、winget でインストールすることにする。
windows10 の場合、winget はインストールされていないので、ms store からダウンロードすること
https://apps.microsoft.com/detail/9NBLGGH4NNS1?hl=ja-jp&gl=JP
※ms store以外からだと自動updateがかからないのでやめておいたほうがいい

$ winget install -e --id GNU.Emacs
'msstore' ソースでは、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例:
"US")
すべてのソース契約条件に同意しますか?
[Y] はい  [N] いいえ: Y
見つかりました GNU Emacs [GNU.Emacs] バージョン 29.1
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://ftp.gnu.org/gnu/emacs/windows/emacs-29/emacs-29.1_2-installer.exe
  ██████████████████████████████  70.0 MB / 70.0 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

# windows 側にインストールされるので、パスを通しておく。
# powershell で以下を実施するか、~/.bash_profile にパスを追加する(この場合、git bash から起動できるようになるだけ)
# powershell でパスを追加する場合:
#   [System.Environment]::SetEnvironmentVariable('path', "C:\Program Files\Emacs\emacs-29.1\bin;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
# .bash_profile にパスを追加する場合:
#   $ vi ~/.bash_profile
#   export PATH=$PATH:"C:\Program Files\Emacs\emacs-29.1\bin"

$ source ~/.bash_profile
$ emacs --version
GNU Emacs 29.1
Copyright (C) 2023 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

# ついでに emacs 設定を取得しておく
$ git clone https://github.com/oya3/.emacs.d
# 初回起動してemacs 設定の必要パッケージをインストールしておく
$ emacs

# emacs 検索で使用するripgrepをインストールしておく
# pacman なので管理者権限でインストールする必要があるので注意
$ pacman -S mingw-w64-x86_64-ripgrep

アンインストール時は、 以下では不可能で、
C:\Program Files\Emacs\Uninstall.exe
を実行すること。

# 以下ではアウンインストールは不可
$ winget uninstall --id GNU.Emacs

windows 側からGUI起動する場合は、
C:\Program Files\Emacs\emacs-29.1\bin\runemacs.exe を起動すること。
また、ピン止めする場合、上記パスのrunemacs.exe のマウス右ボタンメニューからピン止めを行うこと。
ピン止めしたemacs起動時の初期パスを指定する場合、ピン止めした emacs のプロパティ設定から作業ディレクトリを指定すると反映される。

参考情報として、pacman でのインストール方法は以下の通り。
今後、GnuTLS 修正版のemacsがmsys2 repos に登録されたらインストール方法を変更してもいい

# windows管理者権限で実行
$ pacman -R mingw-w64-x86_64-emacs

以下にもQA上がっているが対応方法が不明。。。

emacs インストールでいろいろ作業しているとmsys版emacsが削除できなくなる場合がある。
その場合、以下のように強制上書きインストールを実施するとアンインストール可能となる。

# windows管理者権限で実行
# 上書き強制インストール
$ pacman -S --overwrite '*' mingw-w64-x86_64-emacs
# アンインストール
$ pacman -R mingw-w64-x86_64-emacs

作業メモ

# # GnuTLSライブラリは、ネットワーク通信のセキュリティを提供するためのライブラリ。
# # emacs は、このライブラリを使用して、安全なネットワーク接続(HTTPSなど)を確立するために必要
# $ pacman -S mingw-w64-x86_64-gnutls
# 
# # その他、以下も実験したがだめ
# $ pacman -S mingw-w64-x86_64-freetype mingw-w64-x86_64-gnutls mingw-w64-x86_64-harfbuzz mingw-w64-x86_64-jansson mingw-w64-x86_64-libgccjit mingw-w64-x86_64-libwinpthread mingw-w64-x86_64-tree-sitter mingw-w64-x86_64-universal-ctags mingw-w64-x86_64-xpm-nox mingw-w64-x86_64-zlib
# $ pacman -R mingw-w64-x86_64-freetype mingw-w64-x86_64-gnutls mingw-w64-x86_64-harfbuzz mingw-w64-x86_64-jansson mingw-w64-x86_64-libgccjit mingw-w64-x86_64-libwinpthread mingw-w64-x86_64-tree-sitter mingw-w64-x86_64-universal-ctags mingw-w64-x86_64-xpm-nox mingw-w64-x86_64-zlib
# この問題はemacs起動時にgnutls関連でpackageにアクセスできないのが原因なので、
# 一旦、winget の emacs で起動させたあとに mingw64 の emacs で起動させても以下になる
# $ emacs
# gnutls.c: [1] (Emacs) GnuTLS library not found
# gnutls.c: [1] (Emacs) GnuTLS library not found
# もしかしたら以下のbin上書き作戦で修正されるかもしれない。。。
# - GnuTLSライブラリが見つからない
#   http://cha.la.coocan.jp/doc/NTEmacsBuild261.html#orgf964d2d
#
# mingw-w64-x86_64-emacs が $ pacman -Q | grep emacs しても見つからないのに $ pacman -S mingw-w64-x86_64-emacs とするとアップデートしようして
# msys2 管理状態が異常な場合、強制的に上書きインストールして、アンインストールすればいいかもしれない
#  # 上書きインストール
#  $ pacman -S --overwrite '*' mingw-w64-x86_64-emacs
#  # その後、アンインストール
#  $ pacman -R mingw-w64-x86_64-emacs

# winget だと以下でインストールできる。
# emacs 29.1 の場合、C:\Program Files\Emacs\emacs-29.1\bin にインストールされるので、msys2から見れるようにパスを通しておくこと
$ winget install -e --id GNU.Emacs
# アンインストールするには以下のコマンドでは無理。C:\Program Files\Emacs\Uninstall.exe を実行する必要がある様子。
# $ winget uninstall --id GNU.Emacs

# で、いろいろやったけど、結論としては、winget でインストールしておくのが一番いいかもしれない。。。

hugo インストール #

どうもpacmanでは hugo extended は存在してない様子。
仕方がないので、emacs 同様に winget でインストールする

# これは管理者モードでなくてもインストール可能だが、インストール後、再起動が必要っぽい。
$ winget install Hugo.Hugo.Extended
見つかりました Hugo (Extended) [Hugo.Hugo.Extended] バージョン 0.119.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/gohugoio/hugo/releases/download/v0.119.0/hugo_extended_0.119.0_windows-amd64.zip
  ██████████████████████████████  21.0 MB / 21.0 MB
インストーラーハッシュが正常に検証されました
アーカイブを展開しています...
アーカイブが正常に展開されました
パッケージのインストールを開始しています...
コマンド ライン エイリアスが追加されました: "hugo"
パス環境変数が変更されました; 新しい値を使用するにはシェルを再起動してください。
インストールが完了しました

# os 再起動
$ hugo version
hugo v0.119.0-b84644c008e0dc2c4b67bd69cccf87a41a03937e+extended windows/amd64 BuildDate=2023-09-24T15:20:17Z VendorInfo=gohugoio

ちなみに、通常の hugo なら以下でインストールできる。

# windows管理者権限で実行
$ pacman -S mingw-w64-x86_64-hugo
# バージョン確認 
$ hugo version
hugo v0.118.2-507a67028f2fb5619836f5b2d4dad8bf34f95b6a windows/amd64 BuildDate=2023-09-06T14:12:22Z

pyenv インストール #

ここでは、HOME=c:\home\developer という環境変数が設定してある前提で手順を示す。
通常、USERPROFILE が HOME となっているが、c:\users\配下が汚れるのであえてc:\home 配下を指定している。

まずは、git bash で pyenv を取得する

$ git clone https://github.com/pyenv-win/pyenv-win.git .pyenv

power shell で pyenv 関連の環境変数を設定する

[System.Environment]::SetEnvironmentVariable('PYENV',$env:HOME + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:HOME + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('path', $env:HOME + "\.pyenv\pyenv-win\bin;" + $env:HOME + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

Windows 10の場合:

「アプリと機能 > アプリ実行エイリアス」でアプリインストーラー(python.exe と python3.exe)をオフにする

上記対応でどこからでも pyenv が利用可能になるはず。

とりあえず、git bash で 3.11.6 をインストールしておく

# インストール確認
$ pyenv install --list
...
3.11.6
...
# 3.11.6 インストール
$ pyenv install 3.11.6
# 3.11.6 を global 設定にする
$ pyenv global 3.11.6
# 状態確認
$ pyenv versions
* 3.11.6 (set by C:\home\developer\.pyenv\pyenv-win\version)
# python バージョン確認
$ python --version
Python 3.11.6

# .emacs.d の python 静的解析用パッケージインストールする
$ pip install jedi flake8 importmagic autopep8 yapf black
...
[notice] A new release of pip is available: 23.2.1 -> 23.3.1
[notice] To update, run: python.exe -m pip install --upgrade pip
# 上記の通り、アップグレードを要求されたら以下のコマンドで対応できる
$ python -m pip install --upgrade pip

# もし mingw64側にpythonがインストールされてて、upgrade pip が失敗する場合は、強制削除しておけばいいかもしれない
$ pacman -Rdd mingw-w64-x86_64-python python

venv を使う場合:
pyenv-win の場合、pyenv とは違い、Scripts ディレクトリに activate コマンドが準備されてある

$ python -m venv venv
$ source venv/Scripts/activate
(venv) $ 

poetry インストール #

python のパッケージ管理をより便利にしてくれるツール。
若干、使い方に癖があるので注意

# poetry をインストールしパスを追加する
# python, python3 も同じなので以下で問題ない
$ curl -sSL https://install.python-poetry.org | python3 -
...
Add `export PATH="C:\Users\developer\AppData\Roaming\Python\Scripts:$PATH"` to your shell configuration file.
Alternatively, you can call Poetry explicitly with `C:\Users\developer\AppData\Roaming\Python\Scripts\poetry`.
You can test that everything is set up by executing:
`poetry --version`

# 上記の通りパスを追加する必要があるので実施する
# powershell で poetry path を追加:
[System.Environment]::SetEnvironmentVariable('path', "C:\Users\developer\AppData\Roaming\Python\Scripts;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
# .bash_profile にパスを追加する場合:
$ vi ~/.bash_profile
export PATH=$PATH:"C:\Users\developer\AppData\Roaming\Python\Scripts"

# パス追加後(シェル再起動必要)、動作確認
$ poetry --version
Poetry (version 1.6.1)

poetry使い方をざっくり以下に纏めておく

# projectでpoetryを使い始める
$ poetry init

# なにかpackageをinstallしたいとき
$ poetry add <package_name>

# dev環境のみでいいとき
$ poetry add --dev <package_name>

# .lockファイルからpackageをinstall
$ poetry install

最新版(.toml)のpackageをinstall
$ poetry update

# 仮想環境をactivate
$ peotry shell
# 仮想環境をdeactive
$ exit

# # 以下でもOKかもしれない
# $ source .venv/bin/activate
# # 仮想環境をdeactive
# $ deactivate

# poetry 設定確認
$ poetry config --list

# プロジェクトローカルに.venv作成してそこにパッケージをインストールする
#  - 下記設定でプロジェクトルートに .venv ディレクトリが生成されることになるが、
#    削除時は $ rm -rf .venv でやらないと削除できない感じ。
#    $ poetry env remove .venv でやっても、「[WinError 5] アクセスが拒否されました。」となるので注意
#    poetry config virtualenvs.in-project false の場合、$ poetry env remove xxx でも問題なく削除できる
$ poetry config virtualenvs.in-project true


# 現仮想環境の状態を確認
$ poetry env list
poetry-xx-py3.6

# 現仮想環境の削除
$ poetry env remove poetry-xx-py3.6

気になっている箇所 #

  • diff-highlight が使えない
  • git for windows と TortoiseGit とで設定が不一致になっていないか心配(とくにsshとか認証とか)

参考URL #