[メモ]Jupyter Notebook上で仮想環境を動かす[ImportError: win32apiというモジュールはありません]


前書き

PyGameで色々やりたいなと思い立ったのが昨日のこと。今日はとりあえず仮想環境を作ってJupyterNotebook上でアレコレ試せるようにしたいなと思って作成作業をしていましたが、少しはまってしまいました。

ここではその症状と対処法をメモ書き程度に残しておきます。同じ症状が起きている方はあまり居ないようですが、参考になれば幸いです。

環境

Windows 10
Python 3.8
conda 4.9.0

前提

Jupyterで複数カーネルを簡単に選択するための設定で紹介されている内容は終わっているものとします。

症状と対処法

カーネルの設定も終わったぞ、と思って早速仮想環境に入り、そこからJupyterNotebookを起動すると、何やらkernel errorが。

メッセージを読んでみると、"win32apiがimport出来ないんだけど"という旨のお話。

いくつか記事をあたって見ると、以下のようなサイトが。
ImportError:win32apiというモジュールはありません

Pypiwin32は古いらしいので、代わりにpywin32をpipでインストールしましたが、それでも動きません。さらに読み進めてみると、

pywin32 github に従って実行する必要があります

とのお言葉が。早速githubを見に行ってみると、

Note that if you want to use pywin32 for "system wide" features, such as registering COM objects or implementing Windows Services, then you must run the following command from an elevated command prompt:

python Scripts/pywin32_postinstall.py -install

半分くらいはわかっていませんが、システムワイド(横断的?)に使いたい場合はWindowsサービスに登録しなければならないようなので、Scripts置き場(私の場合はAnaconda3ファイルの直下)に行き、指定されたコマンドを実行すると、ようやく動きました。

雑考察

以前に同じくJupyterNotebookを使える仮想環境を作成しましたが、その時にこのような沼にはまった覚えはありません。

おそらくですが、その時のPythonのバージョンが3.6だか3.5だったのに対し、今回はPygame側から指定されて3.8を仮想環境作成時にインストールしたのが原因なのかもしれません。

まとめ

集合知に感謝。