为什么 cabal sandbox init 不像 virtualenv 那样改变 PATH?
Why cabal sandbox init does not change PATH like virtualenv does?
Haskell 新手和 Python 伙计。
我想我可能在这里遗漏了一些东西,但是如果你看一下 Yesod's quickstart,自动安装一些包 before cabal sandbox init
。我在别处看到过同样的模式。问题:
- 我错过了什么吗?这是使用 cabal 沙箱的真正方法吗?
- 为什么我不能(或不应该)在沙箱中安装 yesod-bin?
- 如果我在某些项目中使用不同版本的 yesod-bin 会怎样?
- 如果有一些库在 .cabal-sandbox/bin 中安装二进制文件,为什么
cabal sandbox init
不更改 PATH 以匹配沙盒版本?
非常感谢您!
是的,这就是沙箱的使用方法。
cabal sandbox init
将为您创建一些文件/目录,用于跟踪您已安装的软件包。
cabal install some_package
会将那个包安装到沙盒中。
非常欢迎您将 yesod-bin
安装到沙箱中。
读取点2
cabal sandbox init
不会改变你的路径,因为它真的不需要。只需在 .bash_profile
中添加 PATH=.cabal-sandbox/bin:$PATH
。
与 virtual-env 不同,您永远不需要 'enable' 或 'disable' 沙箱。您只需 cd
进入一个目录,它就会自动启用。
我发现 cabal 沙箱唯一真正的缺点是您需要在根目录中才能对沙箱进行操作。意思是,如果你在一个子目录中,运行 cabal install some_package
不会将它安装到上一层的沙箱中,而是将它安装到全局或用户数据库中,具体取决于如何您已 cabal
配置。
cabal exec
让您可以在沙箱环境中执行程序。它更改路径以包含沙盒的 bin
文件夹。您可以通过在沙箱内执行 cabal exec printenv
来查看它。
此外,最新版本的 cabal
允许您在没有 .cabal
文件的文件夹中创建沙箱。一旦你 运行 cabal sandbox init
,你就可以 cabal install
你需要的依赖项。
因此,要使用不同版本的 yesod-bin
,请将它们安装在不同的沙箱中,然后在每个沙箱上调用 cabal exec yesod-bin
。
(额外提示:cabal exec gchi
是一个有用的命令,可以让 ghci
了解沙箱的内容。)
Haskell 新手和 Python 伙计。
我想我可能在这里遗漏了一些东西,但是如果你看一下 Yesod's quickstart,自动安装一些包 before cabal sandbox init
。我在别处看到过同样的模式。问题:
- 我错过了什么吗?这是使用 cabal 沙箱的真正方法吗?
- 为什么我不能(或不应该)在沙箱中安装 yesod-bin?
- 如果我在某些项目中使用不同版本的 yesod-bin 会怎样?
- 如果有一些库在 .cabal-sandbox/bin 中安装二进制文件,为什么
cabal sandbox init
不更改 PATH 以匹配沙盒版本?
非常感谢您!
是的,这就是沙箱的使用方法。
cabal sandbox init
将为您创建一些文件/目录,用于跟踪您已安装的软件包。cabal install some_package
会将那个包安装到沙盒中。非常欢迎您将
yesod-bin
安装到沙箱中。读取点2
cabal sandbox init
不会改变你的路径,因为它真的不需要。只需在.bash_profile
中添加PATH=.cabal-sandbox/bin:$PATH
。与 virtual-env 不同,您永远不需要 'enable' 或 'disable' 沙箱。您只需
cd
进入一个目录,它就会自动启用。我发现 cabal 沙箱唯一真正的缺点是您需要在根目录中才能对沙箱进行操作。意思是,如果你在一个子目录中,运行
cabal install some_package
不会将它安装到上一层的沙箱中,而是将它安装到全局或用户数据库中,具体取决于如何您已cabal
配置。
cabal exec
让您可以在沙箱环境中执行程序。它更改路径以包含沙盒的 bin
文件夹。您可以通过在沙箱内执行 cabal exec printenv
来查看它。
此外,最新版本的 cabal
允许您在没有 .cabal
文件的文件夹中创建沙箱。一旦你 运行 cabal sandbox init
,你就可以 cabal install
你需要的依赖项。
因此,要使用不同版本的 yesod-bin
,请将它们安装在不同的沙箱中,然后在每个沙箱上调用 cabal exec yesod-bin
。
(额外提示:cabal exec gchi
是一个有用的命令,可以让 ghci
了解沙箱的内容。)