##0.概要
この記事では,コマンドプロンプト上でvenvを使用して仮想環境を有効化する際,
コマンドマクロを用いることで,煩雑なコマンド入力を簡便化する方法をまとめています.
↓ これが,
C:\users\username\envs\hogeenvs\Scripts\activate.bat
↓ こうなります.
ahogeenvs
##1.背景
Anacondaに満足できなくなり,Python開発環境の再整備を行うことにした.
そこでAnacondaをアンインストールし,シンプルにPythonだけをインストールして環境整備を開始した.
##2.環境
PC:Windows10 Enterprise 1809
システム:64bit
端末:コマンドプロンプト(以後, cmd)を使用
##3.困ったこと
これまでcondaであれば容易に実行できた仮想環境の有効化が,
venvでは煩雑なコマンドを入力しなければならなかった.
例えば,仮想環境情報の入ったフォルダをC:users/username/envsとし,
普段の作業環境フォルダはこれとは別の場所に設けているものとする.
そこで仮想環境"hogeenvs"を有効化したい場合,
condaであれば仮想環境へのパスの入力が不要であったため,
activate hogeenvs (c1)
と記載すればよかった.
しかしvenvでは,現在のフォルダから仮想環境フォルダまでのパスが必要なため,
C:\users\username\envs\hogeenvs\Scripts\activate.bat (c2)
と記載しなければならない.
この問題は,
- 仮想環境情報フォルダと作業環境フォルダを同じにして,短い相対パスで記入する.
- 使用するフォルダの階層をできるだけ上位にあげて,短い絶対パスで記入する.
という方法でも解決可能ではあるものの,
それが叶わない場合にはいちいち上記(c2)を手入力する必要がある.
##4.解決方法
####4.1 doskeyコマンドによるマクロ登録
コマンドマクロ(Linux環境ではエイリアス(alias)と呼ばれるもの)を活用する.
まず,cmd上で以下のように入力する.
doskey ahogeenvs=C:\users\username\envs\hogeenvs\Scripts\activate.bat (c3)
これにより以後cmd上ではahogeenvs
というコマンドを打つと(c2)と同じコマンドを入力したことになる.
もちろん,ahogeenvs
は任意のコマンドであり,各自好みのコマンドを設定すればよい.
ただし,フォルダと完全に一致した名前(ここでいうならhogeenvs
)にすると,
このフォルダ自体を操作する際に不具合を起こす懸念があったため,自分は(c3)のように設定した.
####4.2 登録したマクロをマクロファイルとして出力
4.1で設定したマクロはcmdを閉じると無効になる.
従って,これをマクロファイルとして出力し,4.3, 4.4の手法をもちいて
今後も継続的に使用できるようにする必要がある.
以下のコマンドで,登録したコマンドマクロの一覧は,"c:(任意のパス)\cmd_macros.txt"に出力される.
doskey /macros > c:(任意のパス)\cmd_macros.txt (c4)
####4.3 マクロファイルを起動時に読み込む
4.2で作成したファイルは,cmd起動時に以下のコマンドを入力すると,コマンドマクロとして一括登録される.
doskey /macrofile=c:(3.2で設定したパス)\cmd_macros.txt (c5)
設定が反映されているかは,以下のコマンドで確認する.
doskey /macros (c6)
####4.4 cmd起動時のマクロファイル自動読み込み設定
4.3の手法では,cmd起動時に都度都度(c5)を入力する必要がある.
これはこれで非常に煩雑なので,cmd起動時に自動的にコマンドファイルが読み込まれるようにする.
まず,検索ファイルより"cmd"と入力し,そこから"ファイルの場所を開く"を選択する.
すると,上図のようcmdのショートカットが表示されるため,これを右クリックしプロパティを開く.
"リンク先(T)"のcmd.exeの後ろ(下左図の赤丸部)に半角スペースを入れて,
/k doskey /macrofile=C:(パス情報)\cmd_macros.txt
を入力し,適用をクリック.
これで,次回以降cmdを起動すると自動的にマクロファイルが読み込まれるようになる.
なお,cmdは常ににこのショートカットから起動させるという点に注意する.
もし異なるショートカットを使用したい場合は,ショートカットごとに3.4と同じ設定をする必要がある.
##参考URL
4.1~4.4の操作についての詳細.
https://www.adminweb.jp/command/command/index2.html
コマンドマクロを用いてコマンドプロンプト上で
Linux端末ライクにコマンド操作したい場合.
https://qiita.com/asmin/items/d53e71ed98a377ca7823
https://www.ilovex.co.jp/blog/system/windows/dos-ailias.html