0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsでPythonを使うときに気を付ける3つのこと

Posted at

VirtualBoxをPythonで管理するというのを Linux と Mac でやってみた。
なんとなくうまくできたので、ではWindowsでもやってみようと思ったら酷いカオスに遭遇したので注意点をまとめてみた。

結論

  • Python Install Manager が正道
  • python3 ではなく python コマンドを使う
  • pip コマンドが使えないときは python -m pip を使う

インストール方法は大きく3つ(地雷アリ)

WindowsにPythonをインストールする場合、主な選択肢が3つある。

  1. Microsoft Store で「Python 3.13」をインストールする
  2. Python公式サイトでインストーラをダウンロードしてインストールする
  3. Microsoft Store またはPython公式サイトから「Python Install Manger」をインストールして、そこから Python をインストールする

Pythonを何もインストールしていない状態でコマンドプロンプトで python または python3 を実行すると、自動的に Microsoft Store が立ち上がって「Python 3.13」のページが開く。(2025/11/18現在)
ここでインストールするのが最も早い。と思ったら地雷だった。

import vboxapi
mgr = vboxapi.VirtualBoxManager()

これは、VirtualBoxをPythonで操作するための、最初かつ最小限のコード。
これだけで下記の警告が表示される。

Warning: CoInitializeSecurity was already called

まあ、警告がでるだけで実害があるわけではないのだけれど、何かがうまくいっていない証拠でもある。

VirtualBox SDKでは、COMを使ってVirtualBoxサービスと通信し、仮想マシンや環境の操作・管理を実行する。
WindowsでCOMを使う場合、初期化のためにCoInitializeSecurityAPIを一度だけ実行しなければいけない。
ひとつのプロセス内で2度目の呼び出しは失敗する。
上記の警告は、その「2度目の呼び出しで失敗したよ」という表示。
この関数は vboxapi.VirtualBoxManager() の中で1度だけ呼び出されるが、誰かがその前にすでにCoInitializeSecurityを呼び出しているようだ。
誰が?
冒頭の import vboxapi より前でWin32 API呼び出せるのなんで、Python環境それ自体しかおらんじゃろ。

との見当をつけて、Storeからインストールした Python を一度アンインストールし、公式から 3.14 のインストーラーをダウンロードしてインストールした。
で、やってみた結果、警告は解消した。
一応検証として公式の 3.13 も入れてみたが同じく警告解消。
そういうわけで犯人はStore版Python 3.13と確信。

しかし、公式サイトの説明によると、python単体のインストーラー配布は 3.15 までで、3.16からは Python Install Manager 一択になるらしい。
そこで、公式版 3.14 も一旦アンインストールして、 Python Install Manager を入れてみる。

こちらは、公式でもインストーラーを配布しているし、Microsoft Store でもインストールできる。
公式インストーラーとMicrosoft Storeの両方試してみたが、Python単体版と違ってどちらも同じく使えるようだった。
公式インストーラーの画面で「準備ができたら起動」をチェックしておくか、Storeからインストール後の通知で「ここをクリックして開いてください」をクリックすると、初期設定画面が開く。
ここで最新のpythonをインストールできるし、ここでインストールしなくてもコマンドプロンプトで python と打てばその時に最新のpythonをインストールしてくれる。
あるいはコマンドプロンプトで py install 3.14 などと入力して好きなバージョンを入れることもできる。

python3 には罠がある

上述のインストール方法でも言及したが、python というコマンドはいろいろ引き起こす。
何もインストールしていない状態では Microsoft Store を開くし、Python Install Manager をインストールして python 未インストールの状態だと最新のPythonをインストールする。
もちろんPythonインストール後は普通にpythonを起動する。
ここの挙動は、Windows設定アプリの「アプリ > アプリの詳細設定 > アプリ実行エイリアス」で設定できるもので、C:\Users\shusuke\AppData\Local\Microsoft\WindowsApps\python.exe がこの設定によりいろいろ振り分けているようだ。

これだけでもなかなかのカオスだが、インストール方法によってインストールされるコマンドとされないコマンドがあり、さらに仮想環境にインストールされるコマンド/されないコマンドもあり、混沌が深すぎる。

とりあえずまとめる。

Python (Store) Python (公式) Python Install Manager
グローバル python 使える 使える 使える
グローバル python3 使える Microsoft Storeに遷移 使える
グローバル python3.1x 使える インストールされない 使える
グローバル pip/pip3/pip3.1x 使える 使えない 使えない
venv python 使える 使える 使える
venv python3 使える Microsoft Storeに遷移 使える
venv python3.1x グローバル python3.1x を実行 使えない グローバル python3.1x を実行
venv pip/pip3/pip3.1x 使える 使える 使える

基本的に python コマンドを使うのが安全。
Linux/Macでは通常 python3 コマンドを使うが、その感覚で Windows でも python3 を使うと残念なことになる。
具体的には、仮想環境で実行してるつもりで「モジュールがありません」とか、python3 -m pip install xxx でうっかりグローバルにインストールしちゃったりとか。

pip が使えない場合

前掲の表にあるように、グローバル環境に pip はインストールされない。
「グローバルでモジュール入れない」というのであれば確かに要らないのだが、VirtualBox で Python Support をインストールするためには、グローバルに pywin32 モジュールをインストールしなければならなかったりする。
そういう時には、 python -m pip install pywin32 でインストールする。


いじょ。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?