この記事、何?
Pythonでスクリプト書いて、実行するときにいちいちConda環境を開いてやりたくない。
(JuptyerはGitで差分管理しづらいので使ってない)
で、エクスプローラとかでファイルを一覧で見ている状態から最小ステップで実行できないか考えてみた。
結果、SendoToにバッチファイルを置いてそこから直接Callできるようにできた。
どういう人向け?
あたしと同じように、いちいちConda環境呼び出しがめんどいと思っている方向け。
あと、別件、Pythonスクリプトの所要時間計測したかったのでついでに開始・終了時刻を出せるようにした。
出来上がり♪
いじったのは数行なのでいきなり完成で。
■その1.activate.bat -> activateDirect.bat
まずは、環境切り替えのactivate.batをいじって、activateDirect.batを作成。
1行変更して、数行末尾に追加。
■Anaconda既定の環境切り替え
C:\Anaconda3\Scripts\activate.bat
■変更後の環境切り替え
C:\Anaconda3\Scripts\activateDirect.bat
・1行変更:conda.batに第1引数しか渡さない
<変更前>
@CALL "%~dp0..\Library\bin\conda.bat" activate %*
<変更後>
@CALL "%~dp0..\Library\bin\conda.bat" activate %1
・Python呼び出しを追加し、第2引数を呼び出し対象ファイルとして渡す
※ついでに最後に開始終了時刻を表示
@set started_at=%date% %time%
@python %2
@set finished_at=%date% %time%
@echo started_at=[%started_at%]
@echo finished_at=[%finished_at%]
pause
exit
その2.既定で作られるショートカットのコマンドを流用したバッチを作成 (1行)
Anacondaをインストールした時にできたショートカットをプロパティーで開くとこれが書いてあった。
%windir%\System32\cmd.exe "/K" C:\Anaconda3\Scripts\activate.bat C:\Anaconda3
なので、こんなバッチを作った。
pythoncaller.bat
%windir%\System32\cmd.exe "/K" C:\Anaconda3\Scripts\activateDirect.bat C:\Anaconda3\envs\py36 %1
はい。で、これをOSのSendToにおく。
感想
その先のconda.batを含めてバッチファイルが全部で3つ経由しているのでその気になればもっと改善できそう。
ただ、あたしの目的は達したのでここまででいいかな。
もっと突っ込んで作ってみようと思われた方・・・
というか、すでにここに上がってるよ、という情報があればコメントいただけると助かります。
蛇足
ちなみに、少し前に投稿したこれ、呼び出してみたらこんなでした。
■Pytho手遊び(化合物のSDFをRDBへInsert)
https://qiita.com/siinai/items/1f5bef5e2247a8bb5ccd
started_at=[2019/02/23 15:22:27.18]
finished_at=[2019/02/23 15:27:08.65]
高速化したいね・・・あとで。。。