minicondaにおける「指定されたモジュールが見つかりません」問題

そもそもの問題

タイトル通りminicondaでpythonを管理していると「指定されたモジュールが見つかりません」と時々怒られる。pillowにopensslにlxmlとそれはもう幅広い。しかしある時conda上でscriptを実行すると何事もなく通る事が判明。これは一体どういう事だと色々ポチポチやってたらこんなメッセージが出てきた。

This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load.  To activate this environment
please see https://conda.io/activation

Type "help", "copyright", "credits" or "license" for more information.

これはcmdにpythonと入れると出てくるメッセージだがこれで原因が大体判明。シンプルにminiconda内のpython.exeを叩くとライブラリが読み込まれてないのでエラーを返す様子。つまりconda上からいちいち実行する必要があるらしい。しかしいちいちそんな事するのは面倒だろうが。ひょっとしなくてもcondaは使えない馬鹿な子なのかしら。コマンドライン一発で実行出来んもんか。

Conda Prompt本体はなにか

pathをみると「\Scripts\activate.bat」にminicondaのpathを渡していてこれがConda Prompt本体のようだ。ではactivate.batとは何かというと結局「condabin\conda.bat activate」を実行しているだけらしい。ではまず「condabin\conda.bat activate」とやらをcmd上で実行してみる。すると見慣れたcondaっぽい物になった。続いて問題のscriptを実行すると無事通った。

結論

ではあとは「condabin\conda.bat activate」と実行scriptを続けて実行させればいいのだ。しかしさてそれは一体どうするのか。まあ別に難しい事は全くなくて2つを「&&」でつないでcmdに放り込めばいい。つまりこうだ。

"...condabin\conda.bat activate" && "python scriptのpath"

次はこのコマンドを.pyに関連付けたい。しかしこのまま登録してしまうとループに入る。pyの実行コマンドにさらにpyが入ってるからだね。色々試行錯誤の結果

"...condabin\conda.bat activate" && "miniconda下のpython.exe" "%1" %*

でいいようだ。要はライブラリさえ読み込んでしまえばpython.exeを直接叩いてもいいらしい。