Drkcore

17 12 2012 Haskell Tweet

Haskellでもmkvirtualenvとworkonが使いたい

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ゆずりということで。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021