Pythonにはvirtualenvwrapperというvirtualenvをより快適につかうためのパッケージがあって、インストールするとmkvirtualenvとworkonというコマンドが使えるようになり、散らばりがちな仮想環境をきちんと管理できるようになるので、一度使うと手放せない。
Haskellでもvirtualenvクローンのvirthualenvを使っているのでmkvirtualenv相当のツールが欲しくなるのは必然。
mkvirthualenvというコマンドを書いた。
import System.Directory import System.FilePath import System.Process import System.Environment getVirthualenvDir :: IO FilePath getVirthualenvDir = do home <- getHomeDirectory return $ home </> ".virthualenv" main :: IO () main = do (newenv:_) <- getArgs currentDir <- getCurrentDirectory vdir <- getVirthualenvDir createDirectoryIfMissing True vdir createDirectoryIfMissing True $ vdir </> newenv setCurrentDirectory $ vdir </> newenv _ <- system "virthualenv" setCurrentDirectory $ currentDir return ()
workhonはbashの関数にしてみた。
function workhon(){ source $HOME/.virthualenv/$1/.virthualenv/bin/activate; }
要するに.virthualenvっていうディレクトリでそれぞれの仮想環境を管理するようにしているので、要らなくなったら該当するディレクトリを消せばいいだけ。
例えばHakyll用の仮想環境を用意したい場合、
mkvirthualenv hakyll workhon hakyll cabal install hakyll
こんな感じ。仮想環境をぬけるのは
deactivate
入るのがworkhonで出るのがworkhoffじゃなくてdeacivateなのは何でじゃ?っていう疑問も本家Pythonゆずりということで。