有没有办法创建相当于Python的虚拟环境(virtualenv)?使用virtualenvs,可以在虚拟环境(单独的目录)中安装Python包,而不会弄乱全局python环境。可以删除一个人决定他们不需要的软件包,而不必担心删除另一个Python项目所依赖的软件包。我确信目前我还没有想到其他好处。我注意到当我使用鸡肉安装时,它会在我的/usr/local/Cellar/chicken/4.12.0/lib/chicken/8/
目录中安装所有鸡蛋。有没有办法让他们在项目特定的目录中安装那个鸡蛋,就像Python的virtualenv工作方式一样?
答案 0 :(得分:2)
CHICKEN 4中确实没有这样的东西。这里的问题是将鸡蛋安装到不同的位置是一个部分,另一个是运行程序,以便它们在该位置查找鸡蛋。您可以通过使用以下内容来模拟它:
export LOCAL_EGGS=/path/to/project/local
chicken-install -init $LOCAL_EGGS
export CHICKEN_REPOSITORY=$LOCAL_EGGS
chicken-install r7rs ...
csc ...
答案 1 :(得分:2)
最简单的方法是在构建时使用PREFIX
make
选项将CHICKEN安装到其他位置(有关说明,请参阅README
)。这使您可以为每个项目专门构建一个CHICKEN。我非常喜欢这个选项而不是其他选项,因为它很容易理解,而且CHICKEN本身构建速度非常快而且不是很大,所以我觉得这样做的开销是可以接受的。
或者,使用wasamasa proposed,或使用-deploy
选项在程序中安装鸡蛋。有关详细信息,请参阅手册中的deployment chapter。
答案 2 :(得分:1)
实际上,您不需要任何“虚拟环境”-一切都已经就绪。
有一种简单的方法来change repository location:
CHICKEN_INSTALL_REPOSITORY
是要安装鸡蛋的地方,并且是chicken-install
,chicken-uninstall
和chicken-status
等与鸡蛋相关的工具的参考和更新位置。确保在这些环境变量中给定的路径是绝对路径,而不是相对路径。
和
CHICKEN_REPOSITORY_PATH
是一个目录(或由:
/;
分隔的目录的列表),所有基于鸡肉的程序都将在其中装载鸡蛋。
将CHICKEN_INSTALL_REPOSITORY
指向您想要的位置。请注意,您需要将CHICKEN_REPOSITORY_PATH
指向本地存储库和系统存储库,以便能够导入Chicken系统分发的扩展。
您还很可能需要setup installation prefix:
如果指定,将在扩展安装路径之前添加替代安装前缀。它由
-prefix
选项或环境变量CHICKEN_INSTALL_PREFIX
设置。
并更新您的PATH
:
PATH="$CHICKEN_INSTALL_PREFIX/bin:$PATH"
这允许您安装提供控制台程序的扩展。
剩下要做的就是export
所有这些变量。
就是这样!
这基本上就是Python的virtualenv
activate
脚本所做的事情。如您所见,这是非常简单的步骤。您不需要专用的工具来管理它。一个非常简单的shell脚本可以很好地发挥作用。
这可以通过引入一个更高的深度级别局部层次结构来实现(如/usr
和/usr/local
一样,请参见FHS)。如果您不知道本地层次结构到底是什么,请看看您的$HOME/.local
-里面可能有一些有趣的东西。
就每个项目扩展存储库的设置仅涉及环境修改而言,这绝对可以自动化。通常,有一种非常方便的工具可以解决此类问题:direnv
。在您的$HOME/.envrc
中使用此简单功能:
use_chicken() {
LOCAL=$(expand_path .local)
system_repository=$(chicken-install -repository)
binary_version=${system_repository##*/}
local_repository=${LOCAL}/lib/chicken/${binary_version}
path_add CHICKEN_REPOSITORY_PATH ${system_repository}
path_add CHICKEN_REPOSITORY_PATH ${local_repository}
export CHICKEN_REPOSITORY_PATH
export CHICKEN_INSTALL_REPOSITORY=${local_repository}
export CHICKEN_INSTALL_PREFIX=${LOCAL}
PATH_add ${LOCAL}/bin
}
您只需在项目目录内.envrc
中的这两行即可设置Chicken项目:
source_up
use chicken
答案 3 :(得分:1)
我知道https://github.com/ursetto/cenv存在(我自己从未使用过),尽管它仅适用于CHICKEN 5(不适用于CHICKEN 4)。考虑过要提及它,以防您打算迁移到CHICKEN 5。