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
こんな感じ。仮想環境をぬけるのは
入るのがworkhonで出るのがworkhoffじゃなくてdeacivateなのは何でじゃ?っていう疑問も本家Pythonゆずりということで。