Haskell与阴谋集团的虚拟环境

Haskell与阴谋集团的虚拟环境,haskell,virtualenv,environment,cabal,Haskell,Virtualenv,Environment,Cabal,在Haskell生态系统中实现全系统独立“环境”的方法是什么 作为比较(因为我来自Python中的包管理),下面是一个使用Python的conda工具的示例: ely@eschaton:~$ conda create -n dummy_python python=2.7 numpy=1.8 ipython=2.0 pandas=0.14 Fetching package metadata: ....... Solving package specifications: . Package pla

在Haskell生态系统中实现全系统独立“环境”的方法是什么

作为比较(因为我来自Python中的包管理),下面是一个使用Python的
conda
工具的示例:

ely@eschaton:~$ conda create -n dummy_python python=2.7 numpy=1.8 ipython=2.0 pandas=0.14
Fetching package metadata: .......
Solving package specifications: .
Package plan for installation in environment /home/ely/anaconda/envs/dummy_python:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    numpy-1.8.2                |           py27_0         7.3 MB
    pandas-0.14.1              |       np18py27_0         9.0 MB
    setuptools-5.8             |           py27_0         426 KB
    ------------------------------------------------------------
                                           Total:        16.8 MB

The following NEW packages will be INSTALLED:

    dateutil:   2.1-py27_2       
    ipython:    2.0.0-py27_0     
    numpy:      1.8.2-py27_0     
    openssl:    1.0.1h-1         
    pandas:     0.14.1-np18py27_0
    python:     2.7.8-1          
    pytz:       2014.7-py27_0    
    readline:   6.2-2            
    scipy:      0.14.0-np18py27_0
    setuptools: 5.8-py27_0       
    six:        1.8.0-py27_0     
    sqlite:     3.8.4.1-0        
    system:     5.8-1            
    tk:         8.5.15-0         
    zlib:       1.2.7-0          

Proceed ([y]/n)? y

Fetching packages ...
numpy-1.8.2-py 100% |#####################################################################################################| Time: 0:00:05   1.53 MB/s
pandas-0.14.1- 100% |#####################################################################################################| Time: 0:00:07   1.19 MB/s
setuptools-5.8 100% |#####################################################################################################| Time: 0:00:00 559.36 kB/s
Extracting packages ...
[      COMPLETE      ] |#######################################################################################################################| 100%
Linking packages ...
[      COMPLETE      ] |#######################################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate dummy_python
#
# To deactivate this environment, use:
# $ source deactivate
#
上面是为Python创建新环境的方法,在该环境中,可以在不影响系统Python或任何其他环境的情况下操作库的版本或Python本身

ely@eschaton:~$ source activate dummy_python
discarding /home/ely/anaconda/bin from PATH
prepending /home/ely/anaconda/envs/dummy_python/bin to PATH
(dummy_python)ely@eschaton:~$ python
Python 2.7.8 |Continuum Analytics, Inc.| (default, Aug 21 2014, 18:22:21) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> import IPython
>>> IPython.__version__
'2.0.0'
>>> import pandas
>>> pandas.version
<module 'pandas.version' from '/home/ely/anaconda/envs/dummy_python/lib/python2.7/site-packages/pandas/version.pyc'>
>>> pandas.version.version
'0.14.1'
>>> exit()
(dummy_python)ely@eschaton:~$ source deactivate
discarding /home/ely/anaconda/envs/dummy_python/bin from PATH
ely@eschaton:~$ python
Python 2.7.8 |Anaconda 1.9.0 (64-bit)| (default, Aug 21 2014, 18:22:21) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>> import pandas
>>> pandas.version.version
'0.13.0'
>>> exit()
ely@eschaton:~$source activate dummy\u python
从路径丢弃/home/ely/anaconda/bin
将/home/ely/anaconda/envs/dummy_python/bin预编到路径
(虚拟python)ely@eschaton:~$python
Python 2.7.8 | Continuum Analytics,Inc.|(默认,2014年8月21日,18:22:21)
[GCC 4.4.7 20120313(Red Hat 4.4.7-1)]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
Anaconda由Continuum Analytics为您带来。
请查收:http://continuum.io/thanks 及https://binstar.org
>>>进口伊皮顿
>>>IPython.\u版本__
'2.0.0'
>>>进口大熊猫
>>>熊猫版
>>>pandas.version.version
'0.14.1'
>>>退出()
(虚拟python)ely@eschaton:~$source停用
从路径丢弃/home/ely/anaconda/envs/dummy\u python/bin
ely@eschaton:~$python
Python 2.7.8 | Anaconda 1.9.0(64位)|(默认,2014年8月21日,18:22:21)
[GCC 4.4.7 20120313(Red Hat 4.4.7-1)]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
Anaconda由Continuum Analytics为您带来。
请查收:http://continuum.io/thanks 及https://binstar.org
>>>进口大熊猫
>>>pandas.version.version
'0.13.0'
>>>退出()
因此,您可以看到
dummy_python
有一组库,而系统python有一组不同的库。我可以在文件系统中的任何位置访问这些环境,而不仅仅是在初始化它们的目录中

我知道Haskell的
阴谋集团有,但这些似乎取决于文件系统位置,而不是可以从任何地方访问的单独环境

使用
cabal
的方法是什么,以实现与上述
conda
示例更相似的效果


例如,假设我想要一个Haskell的“环境”,其中安装了HDBC。我想在文件系统中的任何地方切换到这个环境,但我不想通过在我的机器上全局安装HDBC来改变我的GHC基本安装。

阴谋沙盒的设计可能不是为了满足您的需要,但这当然不意味着您不能这样做。您可以使用
cabal--sandbox config file=…
从机器的任何位置访问沙箱。如果你真的喜欢,你可以用别名
cabal
暂时使用你的沙箱。当然,所有这些都需要一份阴谋集团的档案。