ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

【Windows】MinGW-w64によるGCC開発環境の構築

Windows上でのC/C++プログラムの開発にはVisual C++(in Visual Studio)を使うのが一般的だが、これはあくまでWindows完全依存のネイティブ・プログラムを開発するための環境だ。

昔からWindows上にUnix互換環境を構築する試みが行われていて、その集大成的なプロジェクトとして1995年に登場したCygwinというものがある。小生は10年前まで組み込み開発が専門分野だったので、Windows上にCygwin導入してクロスGCCコンパイラをよく使っていたものだ。組み込み屋にとってのCygwinの利用価値はこの一点だけだったので、仮想マシン・ツールの普及、DockerやWSLの登場によって、いまではCygwinを使うことはなくなってしまった。

GCCを使ってWindows用プログラムを開発したい、あるいはUnix/LinuxプログラムをWindowsへ移植したいという要望は昔からあって、それに応える開発環境プロジェクトとしてMinGW-w64(32ビット版MinGWプロジェクトからフォークした64ビット対応版)というのがある。

www.mingw-w64.org

MinGWCygwinからフォークしたプロジェクトだが、Cygwinの成果も吸収して発展し、いまではUnix互換開発環境としてはMinGWの方がメジャーになっている。

開発ブラットホームとしてMacLinuxWindowsを併用するようになり、Linux用プログラムをWindowsへ移植しなければならないケースも出てくるので、Windows機にMinGW-w64を導入した。

ググると同様の記事は多くあるが、自分の備忘録として、MinGW-w64のインストールと環境構築方法を書いておく。

MSYS2のインストール

MinGWプロジェクトの成果物としてMSYS(MSYS2)というのがある。これはBashシェル環境とコマンド群をまとめたもので、MinGW-w64とは別のプロジェクトだが、MinGW-w64とMSYS2を一緒に使うことで、Unixライクな64ビット版Windows用プログラムの開発環境を構築できる。

MSYS2のサイトから、この2つを統合した環境のインストーラを入手することができる(本記事執筆時点での最新版インストーラmsys2-x86_64-20240113.exe)。

www.msys2.org

じつは、MinGW-w64 + MSYS2を導入するのは、むしろこのMSYS2のBashターミナル環境を利用することが優先目的だったりする(MacLinuxのターミナル環境に慣れていると、PowerShellコマンドプロンプトを使うのは苦痛なので。YouTube上でのプログラミング・開発系話題の動画内でWindows環境を利用している場面で、このMinGW-w64 + MSYS2が使われているのを多く観られる。Visual Studio Codeと同様に、いまはこれがWindows利用開発での定番環境となっているようだ)。

インストーラのガイド表示に従って操作すると、MSYS2のデフォルトのインストール先ディレクトリはC:\msys64になる。

また、下の6つのアプリ・アイコンがスタートメニュー内に作成される。

これらのアイコンによって起動する各環境では、その中で使用されるコンパイラ・ツールチェイン、ターゲット・アーキテクチャ、ランタイム・ライブラリの種類が以下のように異なっている。

アブリ・アイコン ツールチェイン格納場所 コンパイラ ターゲットアーキテクチャ ランタイムライブラリ
MSYS2 MSYS /usr gcc x86_64 (Intel 64ビット) cygwin
MSYS2 UCRT64 /ucrt64 gcc x86_64 (Intel 64ビット) ucrt
MSYS2 CLANG64 /clang64 llvm x86_64 (Intel 64ビット) ucrt
MSYS2 CLANGARM64 /clangarm64 llvm aarch64 (ARM 64ビット) ucrt
MSYS2 MINGW32 /mingw32 gcc i686 (Intel 32ビット) msvcrt
MSYS2 MINGW64 /mingw64 gcc x86_64 (Intel 64ビット) msvcrt

LinuxC/C++プログラムはほとんどGCCを使って作成されているので、Linuxプログラムの64ビット版Windowsへの移植に利用するのはMSYS2 MINGW64になる(GCCベースのIntel 64ビット版Windowsプログラムの開発・移植しかやらないなら、これ以外は利用することはないかもしれない)。

MinGW-w64の初期設定

環境変数の設定

MSYS2のインストールが終わったら、システム環境変数に"MSYSTEM"="MINGW64"という設定を作成しておく。

管理者権限でPowerShellを開いて、下のコマンドを実行することで、その設定操作が行える。

> [System.Environment]::SetEnvironmentVariable("MSYSTEM", "MINGW64", "Machine")

さらに、ユーザー環境変数Pathに以下のパスを追加する。

  • C:\msys64\mingw64\bin
  • C:\msys64\usr\local\bin
  • C:\msys64\usr\bin
  • C:\msys64\bin
  • C:\msys64\opt\bin

PowerShellを開いて、以下のコマンドを実行することで、その設定操作が行える。

> $oldpath = [System.Environment]::GetEnvironmentVariable("Path", "User"); $oldpath += ";C:\msys64\mingw64\bin"; [System.Environment]::SetEnvironmentVariable("Path", $oldpath, "User")
> $oldpath = [System.Environment]::GetEnvironmentVariable("Path", "User"); $oldpath += ";C:\msys64\usr\local\bin"; [System.Environment]::SetEnvironmentVariable("Path", $oldpath, "User")
> $oldpath = [System.Environment]::GetEnvironmentVariable("Path", "User"); $oldpath += ";C:\msys64\usr\bin"; [System.Environment]::SetEnvironmentVariable("Path", $oldpath, "User")
> $oldpath = [System.Environment]::GetEnvironmentVariable("Path", "User"); $oldpath += ";C:\msys64\bin"; [System.Environment]::SetEnvironmentVariable("Path", $oldpath, "User")
> $oldpath = [System.Environment]::GetEnvironmentVariable("Path", "User"); $oldpath += ";C:\msys64\opt\bin"; [System.Environment]::SetEnvironmentVariable("Path", $oldpath, "User")

これらの環境変数は、コマンドプロンプトPowerShellなどのMSYS2シェル以外のターミナル環境からMinGW-w64のコマンド群を参照可能にするための設定だ。

パッケージの更新

アプリMSYS2 MINGW64を起動して、開いたシェル画面から下のコマンドを実行する。

$ pacman -Syu

これによって、パッケージデータベース情報、pacmanコマンド、コアパッケージが更新される。

もう一度MSYS2 MINGW64を開いて、下のコマンドを実行する。

$ pacman -Su

これによって、既存の全パッケージが更新される。

ユーザー・ホームディレクトリの変更

MSYS2シェル内でのユーザー・ホームディレクト/home/USERNAMEはパスC:\msys64\home\USERNAMEに割り当てられている。

これはユーザーの好み次第だが、以下のファイルを編集することで、このパスをC:\Users\USERNAMEに変更することができる。

  • C:\msys64\etc\nsswitch.conf(MSYS2シェル内パス/etc/nsswitch.conf
-db_home: cygwin desc
+#db_home: cygwin desc
+db_home: windows

この変更を行った場合は、MSYS2シェルから下のようなコマンドを実行して、すべての設定スクリプトファイルをC:\msys64\home\USERNAMEからC:\Users\USERNAMEへコピーしておくべきだ。

$ cd
$ cp -p /c/msys64/home/USERNAME/.profile /c/msys64/home/USERNAME/.bash_profile /c/msys64/home/USERNAME/.bash_logout /c/msys64/home/USERNAME/.bashrc .

GCCのインストールと動作確認

GCCパッケージのインストール

MSYS2 MINGW64シェルから以下のコマンドを実行すれば、GCCコンパイラおよびその関連パッケージ群をインストールできる。

$ pacman -S base-devel
$ pacman -S mingw-w64-x86_64-toolchain

インストール後、以下の3つのコマンドを実行して、GCCコンパイラが利用できることを確認しておく。

$ gcc --version
$ g++ --version
$ cpp --version

GCCによるコンパイル確認

適当なエディタを使って、以下のようなソース・ファイルを作成する。

#include <stdio.h>
int main() {
    printf("Hello, world!\n");
    printf("sizeof(size_t) = %ld\n", sizeof(size_t));
    return 0;
}

MSYS2 MINGW64シェルを開き、下のコマンドを実行すれば、本ソースがコンパイルされる。

$ gcc hello.c

続いて、下のコマンドを実行すれば、コンパイル生成されたプログラムを実行することができる。

$ ./a.exe
Hello, world!
sizeof(size_t) = 8

【参照リンク】

qiita.com

www.kkaneko.jp

qiita.com

【Windows】pyenv + PoetryによるPython仮想環境構築

前記事でpyenvとpipenvの組み合わせによるPython仮想環境の構築方法を紹介したが、pipenvと並び立つPython用仮想環境ツールとしてPoetryがある。

blog.ketus-ix.work

Python用仮想環境ツールとしてvirtualenv、pipenv、Poetryの3つが広く使われているが、最近の主流はPoetryかもしれない。

python-poetry.org

以前の記事で、UbuntuMacを対象したpyenvとPoetryによるPython仮想環境の構築方法について書いたが、Windowsでも同様の環境を作ることができる。

blog.ketus-ix.work

本記事で、pyenvとPoetryを組み合わせたWindows上でのPython仮想環境の構築方法について紹介する。

なお、以下の内容はpyenv(pyenv-win)がインストール済みであることを前提としている(pyenvのインストール方法については前記事を参照のこと)。

Poetryのインストール

Poetryのインストールは、PowerShellから下のコマンドを実行することで行える。

> (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

Poetryの公式サイトではpyコマンドを使うようになっているが、pyenv側のpythonコマンドを使っても問題ない。

上のコマンドを実行すると、Poetryの実行ファイル群はディレクト%APPDATA%\pypoetryC:\Users\USERNAME\AppData\Roaming\pypoetry)へインストールされる。

Poetryの環境変数設定

Poetryのインストールが済んだら、ディレクトリパス%APPDATA%\Python\ScriptsC:\Users\USERNAME\AppData\Roaming\Python\Scripts)をユーザー環境変数Pathに追加する。

ユーザー環境変数Pathの編集

PowerShellから下のコマンドを実行すれば、その設定操作が行える。

> $oldpath = [System.Environment]::GetEnvironmentVariable("Path", "User"); $oldpath += ";%APPDATA%\Python\Scripts"; [System.Environment]::SetEnvironmentVariable("Path", $oldpath, "User")

Poetryの実行確認

上記の操作が済んだら、poetryコマンドが実行できることを確認しておく。

> poetry --version
Poetry (version 1.7.1)

Poetryの設定変更

Poetryのvirtualenvs.in-projectという設定を以下のように変更しておく。

> poetry config virtualenvs.in-project true
> poetry config --list
cache-dir = "C:\\Users\\USERNAME\\AppData\\Local\\pypoetry\\Cache"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}\\virtualenvs"  # C:\Users\USERNAME\AppData\Local\pypoetry\Cache\virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

この設定をしておくと、プロジェクトディレクトリ内に.venvというディレクトリが作成され、仮想環境のPythonインタープリタおよびパッケージはその中にインストールされるようになる。

pyenv + Poetryによる仮想環境構築

プロジェクトの作成・初期化

> mkdir PROJECT_DIR
> cd PROJECT_DIR
> pyenv local 3.12.1
> python --version
Python 3.12.1
> poetry init

This command will guide you through creating your pyproject.toml config.

Package name [project_dir]:
Version [0.1.0]:
Description []:
Author [vedfolnir-k9 <vedfolnir@ketus-ix.work>, n to skip]:
License []:
Compatible Python versions [^3.12]:

Would you like to define your main dependencies interactively? (yes/no) [yes] no
Would you like to define your development dependencies interactively? (yes/no) [yes] no
Generated file

[tool.poetry]
name = "project-dir"
version = "0.1.0"
description = ""
authors = ["vedfolnir-k9 <vedfolnir@ketus-ix.work>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"


Do you confirm generation? (yes/no) [yes]

プロンプトCompatible Python versions [^3.12]:に対する入力は、以下のような意味になる。

  • ^3.12

3.12 ≦ プログラムのPython依存バージョン < 4.0

  • >=3.8,<3.13

3.8 ≦ プログラムのPython依存バージョン ≦ 3.12

仮想環境の初期化

> poetry install
Creating virtualenv project-dir in C:\Users\USERNAME\PROJECT_DIR\.venv
Updating dependencies
Resolving dependencies... (0.1s)

Writing lock file

Installing the current project: project-dir (0.1.0)
The current project could not be installed: [Errno 2] No such file or directory: 'C:\\Users\\USERNAME\\PROJECT_DIR\\README.md'
If you do not want to install the current project use --no-root

"No such file or directory: 'C:\\Users\\USERNAME\\PROJECT_DIR\\README.md'" というエラーが表示されるが、これは無視しても構わない。

このエラーを回避したければ、ファイルpyproject.toml内の以下の行を編集すれば良い。

  • pyproject.toml
-readme = "README.md"
+readme = ""

Poetryでのパッケージ管理

パッケージのインストール

$ poerty add PACKAGE_NAME

パッケージのアンインストール

$ poerty remove PACKAGE_NAME

開発用パッケージのインストール

$ poerty add --dev PACKAGE_NAME

開発用パッケージのアンインストール

$ poerty remove --dev PACKAGE_NAME

PoetryによるPythonプログラム実行

仮想環境によって直接プログラムを実行

> poetry run python PROGRAM.py

仮想環境を起動して、プログラムを実行

> poetry shell
> python PROGRAM.py
~~~~    ~~~~
~~~~    ~~~~
~~~~    ~~~~
~~~~    ~~~~
> exit

【Windows】pyenv + pipenvによるPython仮想環境構築

前記事で公式版PythonとpipenvによるPython仮想環境の構築方法について書いたが、その中では以前のUbunuとMacを対象した記事で紹介したpyenvは使っていなかった。

blog.ketus-ix.work

pyenvにはWindows版が存在しており、これとpipenvを組み合わせると、下の記事で紹介したような複数のバージョンのPython仮想環境を自由に作成できるようになる。

blog.ketus-ix.work

複数のバージョンの公式版Pythonを利用したり、公式版Pythonとpipenvを組みわせる方法よりも柔軟性が高いので、Windows上でのPython仮想環境の構築方法としてはこれがお薦めと言えるだろう(公式版Pythonを使う必要性が特にないなら、初めから、本記事の内容に従ってPython開発環境を構築した方が良いと思う)。

本記事で、その方法について紹介しよう。

pyenv(pyenv-win)のインストール

Windows版pyenvはChocolateyを使ってインストールすることができる(Chocolateyについてはこちらの記事を参照のこと)。

> choco install -y pyenv-win

このコマンドを使うと、pyenv-winの実行ファイル群はフォルダ%HOMEPATH%\.pyenvにインストールされる。

pyenvの環境変数設定

pyenv-winのインストール時にシステム環境変数に下の設定が追加される。

  • PYENV%USERPROFILE%\.pyenv\pyenv-win\

システム環境変数PYENV

同時に以下の2つのパスがユーザー環境変数Pathに追加される。

  • %USERPROFILE%\.pyenv\pyenv-win\bin
  • %USERPROFILE%\.pyenv\pyenv-win\shims

ここで、元から存在しているパス "C:\Users\USERNAMR\AppData\Local\Microsoft\WindowsApps" を上の2つより検索順が後になるように変更しておく。

ユーザー環境変数Pathの編集

この変更を行なう理由は、WindowsにもデフォルトのPythonが含まれており、上のパスの検索順を高くすると、そちらのpythonコマンド(C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\python.exe)が優先実行の対象となってしまうからだ。pyenv側のpythonコマンド(%HOMEPATH%\.pyenv\pyenv-win\shims\python)が優先実行されるようするために、この変更が必要となる。

pyenvの実行確認

上記の操作が済んだら、pyenvコマンドが実行できることを確認しておく。

> pyenv --version
pyenv 3.1.1

pyenvによるPythonのインストール

入手可能バージョン情報の更新

pyenvをインストールしたら、最初に下のコマンドを実行しておく。

> pyenv update

これによって、pyenvによって入手可能なPythonのバージョン情報が更新される。

将来新しいバージョンのPythonが追加された場合も、このコマンドによって最新のバージョン情報を取得することができる。

Pythonバージョンのインストール

下のコマンドによって、pyenvによってインストール可能なPythonのバージョン情報を取得できる。

> pyenv install --list
:: [Info] ::  Mirror: https://www.python.org/ftp/python
2.4-win32
2.4.1-win32
2.4.2-win32
2.4.3c1-win32
2.4.3-win32
2.4.4-win32
2.5-win32
2.5
2.5.1-win32
2.5.1
2.5.2-win32
2.5.2
2.5.3c1-win32
2.5.3c1
2.5.3-win32
2.5.3
2.5.4-win32
2.5.4
2.6-win32
2.6
2.6.1-win32
2.6.1
2.6.2c1-win32
2.6.2c1
2.6.2-win32
2.6.2
2.6.3rc1-win32
2.6.3rc1
2.6.3-win32
2.6.3
2.6.4rc1-win32
2.6.4rc1
2.6.4rc2-win32
2.6.4rc2
2.6.4-win32
2.6.4
2.6.5rc1-win32
2.6.5rc1
2.6.5rc2-win32
2.6.5rc2
2.6.5-win32
2.6.5
2.6.6rc1-win32
2.6.6rc1
2.6.6rc2-win32
2.6.6rc2
2.6.6-win32
2.6.6
2.7-win32
2.7
2.7.1rc1-win32
2.7.1rc1
2.7.1-win32
2.7.1
2.7.2rc1-win32
2.7.2rc1
2.7.2-win32
2.7.2
2.7.3rc1-win32
2.7.3rc1
2.7.3rc2-win32
2.7.3rc2
2.7.3-win32
2.7.3
2.7.4rc1-win32
2.7.4rc1
2.7.4-win32
2.7.4
2.7.5-win32
2.7.5
2.7.6rc1-win32
2.7.6rc1
2.7.6-win32
2.7.6
2.7.7rc1-win32
2.7.7rc1
2.7.7-win32
2.7.7
2.7.8-win32
2.7.8
2.7.9rc1-win32
2.7.9rc1
2.7.9-win32
2.7.9
2.7.10rc1-win32
2.7.10rc1
2.7.10-win32
2.7.10
2.7.11rc1-win32
2.7.11rc1
2.7.11-win32
2.7.11
2.7.12rc1-win32
2.7.12rc1
2.7.12-win32
2.7.12
2.7.13rc1-win32
2.7.13rc1
2.7.13-win32
2.7.13
2.7.14rc1-win32
2.7.14rc1
2.7.14-win32
2.7.14
2.7.15rc1-win32
2.7.15rc1
2.7.15-win32
2.7.15
2.7.16rc1-win32
2.7.16rc1
2.7.16-win32
2.7.16
2.7.17rc1-win32
2.7.17rc1
2.7.17-win32
2.7.17
2.7.18rc1-win32
2.7.18rc1
2.7.18-win32
2.7.18
3.0a1-win32
3.0a1
3.0a2
3.0a3-win32
3.0a3
3.0a4-win32
3.0a4
3.0a5-win32
3.0a5
3.0b1-win32
3.0b1
3.0b2-win32
3.0b2
3.0b3-win32
3.0b3
3.0rc1-win32
3.0rc1
3.0rc2-win32
3.0rc2
3.0rc3-win32
3.0rc3
3.0-win32
3.0
3.0.1-win32
3.0.1
3.1-win32
3.1
3.1.1-win32
3.1.1
3.1.2rc1-win32
3.1.2rc1
3.1.2-win32
3.1.2
3.1.3rc1-win32
3.1.3rc1
3.1.3-win32
3.1.3
3.1.4rc1-win32
3.1.4rc1
3.1.4-win32
3.1.4
3.2-win32
3.2
3.2.1-win32
3.2.1
3.2.2-win32
3.2.2
3.2.3-win32
3.2.3
3.2.4-win32
3.2.4
3.2.5-win32
3.2.5
3.3.0-win32
3.3.0
3.3.1-win32
3.3.1
3.3.2-win32
3.3.2
3.3.3-win32
3.3.3
3.3.4rc1-win32
3.3.4rc1
3.3.4-win32
3.3.4
3.3.5rc1-win32
3.3.5rc1
3.3.5rc2-win32
3.3.5rc2
3.3.5-win32
3.3.5
3.4.0a1-win32
3.4.0a1
3.4.0a2-win32
3.4.0a2
3.4.0a3-win32
3.4.0a3
3.4.0a4-win32
3.4.0a4
3.4.0b1-win32
3.4.0b1
3.4.0b2-win32
3.4.0b2
3.4.0b3-win32
3.4.0b3
3.4.0rc1-win32
3.4.0rc1
3.4.0rc2-win32
3.4.0rc2
3.4.0rc3-win32
3.4.0rc3
3.4.0-win32
3.4.0
3.4.1rc1-win32
3.4.1rc1
3.4.1-win32
3.4.1
3.4.2rc1-win32
3.4.2rc1
3.4.2-win32
3.4.2
3.4.3rc1-win32
3.4.3rc1
3.4.3-win32
3.4.3
3.4.4rc1-win32
3.4.4rc1
3.4.4-win32
3.4.4
3.5.0a1-win32
3.5.0a1
3.5.0a2-win32
3.5.0a2
3.5.0a3-win32
3.5.0a3
3.5.0a4-win32
3.5.0a4
3.5.0a5-win32
3.5.0a5
3.5.0b1-win32
3.5.0b1
3.5.0b2-win32
3.5.0b2
3.5.0b3-win32
3.5.0b3
3.5.0b4-win32
3.5.0b4
3.5.0rc1-win32
3.5.0rc1
3.5.0rc2-win32
3.5.0rc2
3.5.0rc3-win32
3.5.0rc3
3.5.0rc4-win32
3.5.0rc4
3.5.0-win32
3.5.0
3.5.1rc1-win32
3.5.1rc1
3.5.1-win32
3.5.1
3.5.2rc1-win32
3.5.2rc1
3.5.2-win32
3.5.2
3.5.3rc1-win32
3.5.3rc1
3.5.3-win32
3.5.3
3.5.4rc1-win32
3.5.4rc1
3.5.4-win32
3.5.4
3.6.0a1-win32
3.6.0a1
3.6.0a2-win32
3.6.0a2
3.6.0a3-win32
3.6.0a3
3.6.0a4-win32
3.6.0a4
3.6.0b1-win32
3.6.0b1
3.6.0b2-win32
3.6.0b2
3.6.0b3-win32
3.6.0b3
3.6.0b4-win32
3.6.0b4
3.6.0rc1-win32
3.6.0rc1
3.6.0rc2-win32
3.6.0rc2
3.6.0-win32
3.6.0
3.6.1rc1-win32
3.6.1rc1
3.6.1-win32
3.6.1
3.6.2rc1-win32
3.6.2rc1
3.6.2rc2-win32
3.6.2rc2
3.6.2-win32
3.6.2
3.6.3rc1-win32
3.6.3rc1
3.6.3-win32
3.6.3
3.6.4rc1-win32
3.6.4rc1
3.6.4-win32
3.6.4
3.6.5rc1-win32
3.6.5rc1
3.6.5-win32
3.6.5
3.6.6rc1-win32
3.6.6rc1
3.6.6-win32
3.6.6
3.6.7rc1-win32
3.6.7rc1
3.6.7rc2-win32
3.6.7rc2
3.6.7-win32
3.6.7
3.6.8rc1-win32
3.6.8rc1
3.6.8-win32
3.6.8
3.7.0a1-win32
3.7.0a1
3.7.0a2-win32
3.7.0a2
3.7.0a3-win32
3.7.0a3
3.7.0a4-win32
3.7.0a4
3.7.0b1-win32
3.7.0b1
3.7.0b2-win32
3.7.0b2
3.7.0b3-win32
3.7.0b3
3.7.0b4-win32
3.7.0b4
3.7.0b5-win32
3.7.0b5
3.7.0rc1-win32
3.7.0rc1
3.7.0-win32
3.7.0
3.7.1rc1-win32
3.7.1rc1
3.7.1rc2-win32
3.7.1rc2
3.7.1-win32
3.7.1
3.7.2rc1-win32
3.7.2rc1
3.7.2-win32
3.7.2
3.7.3rc1-win32
3.7.3rc1
3.7.3-win32
3.7.3
3.7.4rc1-win32
3.7.4rc1
3.7.4rc2-win32
3.7.4rc2
3.7.4-win32
3.7.4
3.7.5rc1-win32
3.7.5rc1
3.7.5-win32
3.7.5
3.7.6rc1-win32
3.7.6rc1
3.7.6-win32
3.7.6
3.7.7rc1-win32
3.7.7rc1
3.7.7-win32
3.7.7
3.7.8rc1-win32
3.7.8rc1
3.7.8-win32
3.7.8
3.7.9-win32
3.7.9
3.8.0a1-win32
3.8.0a1
3.8.0a2-win32
3.8.0a2
3.8.0a3-win32
3.8.0a3
3.8.0a4-win32
3.8.0a4
3.8.0b1-win32
3.8.0b1
3.8.0b2-win32
3.8.0b2
3.8.0b3-win32
3.8.0b3
3.8.0b4-win32
3.8.0b4
3.8.0rc1-win32
3.8.0rc1
3.8.0-win32
3.8.0
3.8.1rc1-win32
3.8.1rc1
3.8.1-win32
3.8.1
3.8.2rc1-win32
3.8.2rc1
3.8.2rc2-win32
3.8.2rc2
3.8.2-win32
3.8.2
3.8.3rc1-win32
3.8.3rc1
3.8.3-win32
3.8.3
3.8.4rc1-win32
3.8.4rc1
3.8.4-win32
3.8.4
3.8.5-win32
3.8.5
3.8.6rc1-win32
3.8.6rc1
3.8.6-win32
3.8.6
3.8.7rc1-win32
3.8.7rc1
3.8.7-win32
3.8.7
3.8.8rc1-win32
3.8.8rc1
3.8.8-win32
3.8.8
3.8.9-win32
3.8.9
3.8.10-win32
3.8.10
3.9.0a1-win32
3.9.0a1
3.9.0a2-win32
3.9.0a2
3.9.0a3-win32
3.9.0a3
3.9.0a4-win32
3.9.0a4
3.9.0a5-win32
3.9.0a5
3.9.0a6-win32
3.9.0a6
3.9.0b1-win32
3.9.0b1
3.9.0b2-win32
3.9.0b2
3.9.0b3-win32
3.9.0b3
3.9.0b4-win32
3.9.0b4
3.9.0b5-win32
3.9.0b5
3.9.0rc1-win32
3.9.0rc1
3.9.0rc2-win32
3.9.0rc2
3.9.0-win32
3.9.0
3.9.1rc1-win32
3.9.1rc1
3.9.1-win32
3.9.1
3.9.2rc1-win32
3.9.2rc1
3.9.2-win32
3.9.2
3.9.3-win32
3.9.3
3.9.4-win32
3.9.4
3.9.5-win32
3.9.5
3.9.6-win32
3.9.6
3.9.7-win32
3.9.7
3.9.8-win32
3.9.8
3.9.9-win32
3.9.9
3.9.10-win32
3.9.10
3.9.11-win32
3.9.11
3.9.12-win32
3.9.12
3.9.13-win32
3.9.13
3.10.0a1-win32
3.10.0a1
3.10.0a2-win32
3.10.0a2
3.10.0a3-win32
3.10.0a3
3.10.0a4-win32
3.10.0a4
3.10.0a5-win32
3.10.0a5
3.10.0a6-win32
3.10.0a6
3.10.0a7-win32
3.10.0a7
3.10.0b1-win32
3.10.0b1
3.10.0b2-win32
3.10.0b2
3.10.0b3-win32
3.10.0b3
3.10.0b4-win32
3.10.0b4
3.10.0rc1-win32
3.10.0rc1
3.10.0rc2-win32
3.10.0rc2
3.10.0-win32
3.10.0
3.10.1-win32
3.10.1
3.10.2-win32
3.10.2
3.10.3-win32
3.10.3
3.10.4-win32
3.10.4
3.10.5-win32
3.10.5
3.10.6-win32
3.10.6
3.10.7-win32
3.10.7
3.10.8-win32
3.10.8
3.10.9-win32
3.10.9
3.10.10-win32
3.10.10
3.10.11-win32
3.10.11
3.11.0a1-win32
3.11.0a1
3.11.0a2-win32
3.11.0a2
3.11.0a3-win32
3.11.0a3
3.11.0a4-win32
3.11.0a4
3.11.0a5-win32
3.11.0a5
3.11.0a6-win32
3.11.0a6
3.11.0a7-win32
3.11.0a7
3.11.0b1-win32
3.11.0b1
3.11.0b2-win32
3.11.0b2
3.11.0b3-win32
3.11.0b3
3.11.0b4-win32
3.11.0b4
3.11.0b5-win32
3.11.0b5
3.11.0rc1-win32
3.11.0rc1
3.11.0rc2-win32
3.11.0rc2
3.11.0-win32
3.11.0
3.11.1-win32
3.11.1
3.11.2-win32
3.11.2
3.11.3-win32
3.11.3
3.11.4-win32
3.11.4
3.11.5-win32
3.11.5
3.11.6-win32
3.11.6
3.11.7-win32
3.11.7
3.12.0a1-win32
3.12.0a1
3.12.0a2-win32
3.12.0a2
3.12.0a3-win32
3.12.0a3
3.12.0a4-win32
3.12.0a4
3.12.0a5-win32
3.12.0a5
3.12.0a6-win32
3.12.0a6
3.12.0a7-win32
3.12.0a7
3.12.0b1-win32
3.12.0b1
3.12.0b2-win32
3.12.0b2
3.12.0b3-win32
3.12.0b3
3.12.0b4-win32
3.12.0b4
3.12.0rc1-win32
3.12.0rc1
3.12.0rc2-win32
3.12.0rc2
3.12.0rc3-win32
3.12.0rc3
3.12.0-win32
3.12.0
3.12.1-win32
3.12.1
3.13.0a1-win32
3.13.0a1
3.13.0a2-win32
3.13.0a2
3.13.0a3-win32
3.13.0a3

使用する予定のバージョンのPythonをあらかじめインストールしておく。

> pyenv install 3.12.1
> pyenv install 3.11.7
> pyenv install 3.10.11
> pyenv install 3.9.13
> pyenv install 3.8.10
> pyenv rehash

後から追加することもできるので、適当なバージョンを一つ選んでインストールしておいても良いだろう。

インストール済みバージョンの表示

pyenvによってインストール済みのPythonのバージョンは、下のコマンドによって確認することができる。

> pyenv versions
  3.10.11
  3.11.7
  3.12.1
  3.8.10
  3.9.13

pyenv上でのpipenvのインストール

pipenvのインストール

> pyenv global 3.12.1
> cd
> python --version
Python 3.12.1
> pip install pipenv

pipenvの環境変数設定

pipenvがインストールができたら、ユーザー環境変数に "PIPENV_VENV_IN_PROJECT" = "true" という設定を作成しておく。

ユーザー環境変数PIPENV_VENV_IN_PROJECTの新規作成

PowerShellから下のコマンドを実行すれば、その設定操作が行える。

> [System.Environment]::SetEnvironmentVariable("PIPENV_VENV_IN_PROJECT", "true", "User")

この設定をしておくと、プロジェクトディレクトリ内に.venvというディレクトリが作成され、仮想環境のPythonインタープリタおよびパッケージはその中にインストールされるようになる。

pyenv+pipenvによる仮想環境作成/削除

仮想環境の作成

> mkdir PROJECT_DIR
> cd PROJECT_DIR
> pyenv local 3.12.1
> python --version
Python 3.12.1
> pipenv --python 3.12.1

仮想環境の削除

> cd PROJECT_DIR
> pipenv --rm

pipenvによるパッケージ管理

パッケージのインストール

> pipenv install PACKAGE_NAME

開発用パッケージのインストール

> pipenv install --dev PACKAGE_NAME

パッケージのアンインストール

> pipenv uninstall PACKAGE_NAME

pipenvによるPythonプログラム実行

仮想環境によって直接プログラムを実行

> pipenv run python PROGRAM.py

仮想環境を起動して、プログラムを実行

> pipenv shell
> python PROGRAM.py
~~~~    ~~~~
~~~~    ~~~~
~~~~    ~~~~
~~~~    ~~~~
> exit

補足説明

すでに公式版Pythonをインストール済みの場合、それとpyenvによってインストールするPythonがバッティングしてしまう。

公式版Pythonをすべてアンインストールするか、pyenv側のPythonが優先されるように調整する必要がある。

公式版Pythonのアンインストール

Chocolateyを使って公式版Pythonをインストールした場合は、下のコマンドによってをアンイストールできる。

> choco uninstall -y python

本記事の内容に従って、pyenvとpipenvによって作成した仮想環境だけを使ってPythonプログラム開発を行うなら、公式版Pythonを利用する必要性はない。

公式版よりpyenv側のPythonを優先する設定

公式版Pythonのインストール時に追加された以下の2つのパスをシステム環境変数Pathから削除して、ユーザー環境変数Pathへ移動追加する。

  • C:\Python312\Scripts\
  • C:\Python312\

その場合、pyenvによって追加された2つのパスより検索順が後になるようにする。

ユーザー環境変数Pathの編集

複数のバージョンの公式版Pythonをインストールしていた場合は、同様のすべてのパスをシステム環境変数Pathから削除して、ユーザー環境変数Pathへ移動追加しておく。

前記事の内容に従って、pipenv用の下のパスをユーザー環境変数Pathへ追加していた場合は、これを削除する。

  • C:\Users\USERNAME\AppData\Roaming\Python\Python312\Scripts

pyenv側のpipコマンドを使ってpipenvをインストールでき、それによって仮想環境を作成できるので、公式版Python側のpipenvは不要となる。

【参照リンク】

qiita.com

【Windows】公式版Python + pipenvによる仮想環境構築

以前の記事にpipenvによる仮想環境の構築方法について書いたが、プラットホームはUbuntuMacを対象としてしか説明していなかった。

blog.ketus-ix.work

Windows上でも公式版Python+pipenvの組み合わせで同様の構築を構築できたので、その方法を紹介する。

以降の内容は、公式版Pythonがインストール済みであることを前提としている。Windowsでの公式版Pythonのインストール方法については下の記事を参照のこと。

blog.ketus-ix.work

pipenvのインストール

pipenvのインストールは、公式版Pythonがインストール済みの状態で、PowerShellまたはコマンドプロンプトから下のコマンドを実行すれば行える。

> pip install --user pipenv
....    ....
....    ....
....    ....
....    ....
Installing collected packages: pipenv
  WARNING: The scripts pipenv-resolver.exe and pipenv.exe are installed in 'C:\Users\USERNAME\AppData\Roaming\Python\Python312\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pipenv-2023.11.17
  

ただし、これだけではpipenvのインストールはできても、"pipenv"コマンドを使える状態にはならない。

"pipenv"コマンドを実行すると、下のようなエラーが表示されるだろう。

> pipenv --version
pipenv : 用語 'pipenv' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されま
せん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してく
ださい。
発生場所 行:1 文字:1
+ pipenv --version
+ ~~~~~~
    + CategoryInfo          : ObjectNotFound: (pipenv:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
  

これを解決するには、上のpipenvのインストール時に表示された警告メッセージ中のパス "C:\Users\USERNAME\AppData\Roaming\Python\Python312\Scripts" をユーザー環境変数Pathへ追加すれば良い。

ユーザー環境変数Pathの編集

PowerShellから下のコマンドを実行すれば、その設定操作が行える。

> $oldpath = [System.Environment]::GetEnvironmentVariable("Path", "User"); $oldpath += ";C:\Users\USERNAME\AppData\Roaming\Python\Python312\Scripts"; [System.Environment]::SetEnvironmentVariable("Path", $oldpath, "User")

上の操作を行った後、再度PowerShellまたはコマンドプロンプトを開いて"pipenv"コマンドを実行すれば、同コマンドが正常に使える状態になっているはずだ。

> pipenv --version
pipenv, version 2023.11.17

pipenvの環境変数設定

pipenvがインストールができたら、ユーザー環境変数に "PIPENV_VENV_IN_PROJECT" = "true" という設定を作成しておく。

ユーザー環境変数PIPENV_VENV_IN_PROJECTの新規作成

PowerShellから下のコマンドを実行すれば、その設定操作が行える。

> [System.Environment]::SetEnvironmentVariable("PIPENV_VENV_IN_PROJECT", "true", "User")"

この設定をしておくと、プロジェクトディレクトリ内に.venvというディレクトリが作成され、仮想環境のPythonインタープリタおよびパッケージはその中にインストールされるようになる。

pipenvによる仮想環境作成/削除

仮想環境の作成

新しい仮想環境の作成は、必ずプロジェクト用ディレクトリを作成してから、その中で行うようにする。

> mkdir PROJECT_DIR
> cd PROJECT_DIR
> pipenv install

仮想環境を作成すると、プロジェクトディレクトリ内にPipfilePipfile.lockというファイルが作成され、インストールしたパッケージ情報はこの中に追記されていく。

仮想環境の削除

> cd PROJECT_DIR
> pipenv --rm

pipenvによるパッケージ管理

パッケージのインストール

> pipenv install PACKAGE_NAME

開発用パッケージのインストール

> pipenv install --dev PACKAGE_NAME

パッケージのアンインストール

> pipenv uninstall PACKAGE_NAME

pipenvによるPythonプログラム実行

仮想環境によって直接プログラムを実行

> pipenv run python PROGRAM.py

仮想環境を起動して、プログラムを実行

> pipenv shell
> python PROGRAM.py
~~~~    ~~~~
~~~~    ~~~~
~~~~    ~~~~
~~~~    ~~~~
> exit

【参照リンク】

www.aska-ltd.jp

【Windows】Visual Studio CodeでのPython仮想環境の使用

前記事に公式版Pythonによる仮想環境の構築方法について書いたが、小生はPythonプログラムの開発にはVisual Studio Codeを利用しており、コーディングもデバッグもほとんどVSCodeを使って行っている(多く人が同じ環境を使っているようで、ググるとたくさんのページがヒットする)。

blog.ketus-ix.work

MacUbuntuではすでにこの環境は構築済みで常用しているが、Windows上にPython開発環境を構築するにあたって、このPython + VSCode環境の構築方法を備忘録として書いておくことにする。

Visual Studio Codeのインストール

ChocolateyによるVSCodeのインストールは、管理者権限で開いたPowerShellから下のコマンドを実行することで行える(Chocolateyについてはこちらの記事を参照のこと)。

> choco install -y vscode

Visual Studio CodeでのPython仮想環境の設定

拡張機能 Python のインストール

VSCodePythonプログラムの開発を行う場合、拡張機能 "Python" を利用する。

メニュー[Manage (管理)](左下の歯車マーク) > [Extensions (拡張機能)] で開いたバネルの検索ボックスに "python" と入力すると、拡張機能 "Python" が表示されるので、それを選んで、[Install (インストール)]を実行するとインストールできる。

なお、Chocolateyを利用してVSCode拡張機能 "Python" をインストールすることもできる。

> choco install -y vscode-python

VSCodeのUIを日本語表示にしたい場合は、先に拡張機能 "Japanese Language Pack for Visual Studio Code" をインストールしておく。

仮想環境のPythonインタープリタ設定

Python仮想環境を作成したプロジェクトディレクトリをVSCodeから開く(仮想環境の作成方法については前記事を参照のこと)。

コマンドパレット(ショートカットキーShift+Ctrl+P)から "Python: Select Interpreter" を選ぶ。

すると、利用可能なPythonインタープリタの一覧が表示されるので、その中から "Python x.xx.x ('.venv': venv) .\.venv\Scripts\python.exe" を選択する。

この状態で拡張子 .py のファイルを作成すると、Pythonプログラムのソースファイルとして認識され、ステータスバー上に選択した "Python x.xx.x ('.venv': venv)" が表示されているのが確認できる。

上記の操作設定によって仮想環境がすでに起動しており、作成したPythonソースファイルをランすると、それは選択済みのPython仮想環境によって実行される。

【参照サイト】

qiita.com

【Windows】公式版Pythonによる仮想環境の構築

前記事にWindowsのパッケージマネージャであるChocolateyの使用方法について書いたが、Windows関連の最初の記事としてこの内容を選んだのは訳がある。

blog.ketus-ix.work

Windows関連の記事でツールなどのインストール方法の説明をできるだけ簡略化したかったからだ。Chocolateyを利用してツールなどをインストールする場合、インストール手順のコマンドだけを書けば良い。

小生のWindows環境では、Chocolateyでインストール可能ものはすべてこれを使って導入しており、Chocolateyでインストールできないものだけ追加的な方法を使うようにしている。

Windows環境を使い始めた第一の目的はPythonによるAI開発環境を構築することなので、Windows周りではしばらくPython関連の記事を書いていくことになるだろう。その最初の記事として、公式版Pythonによる仮想環境の構築方法について書くことにする。

以下の内容は、Chocolateyがインストール済みという前提で書いていく。

公式版Pythonのインストール

Chocolateyによる公式版Pythonのインストールは、管理者権限で開いたPowerShellから下のコマンドを実行することによって行える。

> choco install -y python

このコマンドによってインストールされるのは、Pythonの公式サイトで配布されている最新バージョン(本記事執筆時点では、バージョン3.12.1)だ。

最新版より古いバージョンは以下のコマンドによってインストールできる。

> choco install -y python311
> choco install -y python310
> choco install -y python39
> choco install -y python38
> choco install -y python37
> choco install -y python36
> choco install -y python35

上記のコマンドを使うと、Pythonの実行ファイル群はフォルダC:\Python<Version>Python 3.12ならC:\Python312)にインストールされる。

また、同時に以下の2つのパスがシステム環境変数Pathに追加される。

  • C:\Python312\Scripts\
  • C:\Python312\

ユーザー環境変数Pathの確認

公式版Pythonのインストールが済んだら、PowerShell(ターミナル)を開いて、下のコマンドを実行できるか確認しておく。

> python --version
Python 3.12.1

なお、複数のバージョンの公式版Pythonをインストールした場合、"python" の代わりに "python3.12" のようなバージョン番号付きのコマンドを使わなければいけなくなる。 コマンド "python" でアクセスできるのは最後にインストールしたバージョンのPythonだけになる(後からインストールしたものが環境変数Pathの検索順の上位となるため)。

公式版Pythonによる仮想環境の構築

公式版Pythonには "venv" というコマンドが含まれており、これを利用することで仮想環境を構築できる。

仮想環境の作成

任意のプロジェクト用ディレクトを作成して、その中で下記のコマンドを実行すると、新しいPython仮想環境を作成できる。

> mkdir PROJECT_DIR
> cd PROJECT_DIR
> python -m venv .venv

複数のバージョンの公式版Pythonをインストールしている場合は、下のようなコマンドによって、Pythonのバージョンを指定して仮想環境を作成することができる。

> python3.10 -m venv .venv

仮想環境の起動と終了

PowerShellを使う場合

PowerShell(ターミナル)から仮想環境を使う場合は、毎回最初に下のコマンドを実行しておく必要がある。

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

仮想環境の起動

> cd PROJECT_DIR
> .venv\Scripts\activate

仮想環境の終了

(.venv) > deactivate

コマンドプロンプトを使う場合

仮想環境の起動

> cd PROJECT_DIR
> .venv\Scripts\activate

仮想環境の終了

(.venv) > deactivate

仮想環境でのPythonパッケージの管理

作成したPython仮想環境には、"pip" というコマンドが含まれている。

pipPythonの公式パッケージ配布サイトであるPyPiからパッケージを参照するためのコマンドであり、このコマンドを使って各種のパッケージを入手することがきる。

pipコマンドの更新

(.venv) > python -m pip install --upgrade pip

パッケージのインストール

(.venv) > pip install PACKAGE_NAME

パッケージのアンインストール

(.venv) > pip uninstall PACKAGE_NAME

インストール済みパッケージの更新

(.venv) > pip install --upgrade PACKAGE_NAME

インストール済みパッケージの情報表示

(.venv) > pip show PACKAGE_NAME

インストール済みパッケージの一覧表示

(.venv) > pip list

仮想環境を起動していない状態でpipコマンドを使うと、システム側のPythonが操作対象となるので注意する必要がある。

仮想環境が起動している状態でコマンドpip install PACKAGE_NAMEを実行すると、フォルダPROJECT_DIR\.venv\Libの中にパッケージがインストールされるが、仮想環境を起動していない状態では、システム側のフォルダC:\Python<Version>\Libの中にパッケージがインストールされる。

補足説明

複数のバージョンの公式版Pythonをインストールした場合、システム側のPythonのコマンド "pip" も "pip3.12" のようなバージョン番号付きのコマンドを使わなければいけなくなる。 コマンド "pip" でアクセスできるのは最後にインストールしたバージョンのものだけになる。

ChocolateyによるWindowsパッケージ管理

仕事上の事情により、しばらくWindowsをメイン開発環境として使わざるをえなくなった。

事情というのは、企業向けエンジニア教育に関わることになったからだ。日本国内の大抵の企業ではデフォルトPCとしてWindows機が使われることが多い。ベンチャーやスタートアップ企業ではMacの方がメジャーなのは知っているが、そうでない一般企業向けという前提条件がつくと、Windowsの方をデフォルトPC環境だと想定せざるをえない。

もう一つの事情として、MacでAI開発をやりたいからだ。MacNVIDIA GPUを利用するにはWindowsを使うしか方法がない。それで、eGPUを接続したIntel MacWindows上に機械・深層学習、生成AI用開発環境を構築する作業も行っている。

ここ20年程ずっとMacを仕事とプライベート両方の常用メイン機として使ってきた。開発用でもMacまたはUbuntu Linuxをデフォルトとして使っていて、どうしても必要な場合のみWindowsを利用していた。久しぶりにWindows(具体的にはWindows 11 Pro)も開発メイン機として使い始めたが、常用環境として使うのはWindows XP以来だ。

Windows周りも進化していて、Chocolateyというパッケージ管理ツールを利用することでプログラム管理がずいぶんやり易くなっている。

chocolatey.org

昔は素のWindowsに十全な仕事&開発環境を構築するには2〜3日かかったものだが、Chocolateyを利用すると1日あれば構築できる。アプリやツールの導入や削除が楽にできるので、できるだけChocolateyでインストール可能なものしか使わないようにしている。

MacのHomebrew、Ubuntuのapt-getコマンドに相当するのがこのChocolateyだと言えるだろう。

WSLを利用してUbuntu環境を構築することもできるし、Dockerを利用すればUbuntuMacを使う場合との差はほとんどない。Visual Studioさえ使わなければだが、WindowsでのUnixライクな開発は昔より随分やり易くなっている(逆に言うと、Visual Studioを使う開発ケースが極端に減っている。エンジニア向け求人サイトで探しても、Windows系開発案件はほとんど見なくなった。需要優先順としてWeb/スマホ・ファーストになって、Windows用デスクトップ・ソフトウェアを開発する必要性が低下したからだろう)。

今後Windows関連の記事も書くことになるだろうから、自分の備忘録も兼ねて、Chocolateyの使い方を書いておく。

Chocolateyのインストール

Chocolateyには個人利用(Individual)向けのCommunity版と企業(Bussines)向けのPro版がある。

前者は、管理者権限で開いたPowerShellから以下のコマンドを実行することでインストールできる。

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

ただし、このコマンドは将来変更される可能性があるので、以下のリンクページで確認した方が良い。

Chocolatey Software | Installing Chocolatey

Chocolateyによるパッケージ管理コマンド

Chocolateyのコマンドは常に管理者権限で開いたPowerShellから実行する必要がある。

パッケージのインストール

choco install PACKAGE_NAME

パッケージのアンインストール

choco uninstall PACKAGE_NAME

インストール済みパッケージの更新

choco upgrade PACKAGE_NAME

インストール済み全パッケージの更新

choco upgrade all

上の各コマンドでは操作処理の実行前に確認を尋ねられるが、choco install -y PACKAGE_NAMEのように-yオプションを付加すると、これを回避して実行できる。

インストール済みパッケージ一覧の表示

choco list

パッケージの検索

choco search PACKAGE_NAME

インストール済み全パッケージ情報の出力

choco export PACKAGELIST_FILE

Chocolatey GUI

ChocolateyにはGUIアプリが在り、これを使ってパッケージ操作を行うこともできる。

Chocolatey GUIは下のコマンドによってインストールできる。

choco install chocolateygui

パッケージ情報のエクスポート

Chocolatey GUIには、インストール済み全パッケージ情報をファイル出力する機能がある。この機能を利用すると、他のPCに同じパッケージを一括してインストールすることができる。

Chocolatey GUIの画面右上のフロッピー・マークのボタンがその機能で、これをクリックすると、インストール済み全パッケージ情報をファイルとして出力できる。これはコマンドchoco export PACKAGELIST_FILEと同じ機能で、エクスポートされたファイルは下のようなXML形式のテキストファイルになっている。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="010editor" version="14.0.0" />
  <package id="010editor.install" version="14.0.0" />
  <package id="7zip" version="23.1.0" />
  <package id="7zip.install" version="23.1.0" />
  <package id="adobe-source-sans" version="3.052" />
  <package id="adobe-source-serif" version="4.005" />
  ....    ....
  ....    ....
</packages>

下のようなコマンドによってこのファイルを指定すると、そのファイル内に記述されたパッケージを一括してインストールすることができる。

choco install PACKAGELIST_FILE

Chocolateyパッケージの探し方

Chocolateyのパッケージは下のページで検索することができる。

community.chocolatey.org

Community版パッケージはメンテナンスされていないものあり、パッケージによってはインストールに失敗することがある。そういうパッケージはかなりの数あるが、その場合は同種の別のパッケージを探すか、諦めるしかない。と言っても、よく使われるメジャーなアプリやツールは大抵インストールに成功するみたいだが。

補足情報

パッケージによっては、以下のようなChecksumエラーのメッセージが出力されてインストールに失敗する場合がある。

> choco install -y free-hex-editor-neo
Chocolatey v2.2.2
Installing the following packages:
free-hex-editor-neo

Progress: Downloading free-hex-editor-neo 7.25.0.8449... 100%

free-hex-editor-neo v7.25.0.8449 [Approved]
....    ....
....    ....

Downloading free-hex-editor-neo
  from 'https://www.hhdsoftware.com/Download/free-hex-editor-neo.exe'
Error - hashes do not match. Actual value was 'D7951CB8E808FD626E5BAA4E0F110FBF449A906C'.
ERROR: Checksum for 'C:\Users\LOGINUSER\AppData\Local\Temp\chocolatey\free-hex-editor-neo\7.25.0.8449\free-hex-editor-neo.exe' did not meet 'a565b93de5fe6efc0d3c934e9c3414e78a6ce0cf' for checksum type 'sha1'. Consider passing the actual checksums through with --checksum --checksum64 once you validate the checksums are appropriate. A less secure option is to pass --ignore-checksums if necessary.
The install of free-hex-editor-neo was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\free-hex-editor-neo\tools\chocolateyinstall.ps1'.
 See log for details.

Chocolatey installed 0/1 packages. 1 packages failed.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Failures
 - free-hex-editor-neo (exited -1) - Error while running 'C:\ProgramData\chocolatey\lib\free-hex-editor-neo\tools\chocolateyinstall.ps1'.
 See log for details.

その場合は、下のように--ignore-checksumオプションを付加してコマンドを実行すると、インストールできる。

> choco install -y --ignore-checksum free-hex-editor-neo

これまでMacかUbiuntu Linuxを前提環境とした記事しか書いてこなかったが、いままで書いた記事の内容でWindows環境での情報も取得できたら、それも記事として書いていこうと思っている。

【参照リンク】

qiita.com