是否有與 nix-shell 等效的 Guix?
正如手冊頁
nix-shell
所描述的那樣:Nix 可用於通過 nix-shell 命令提供某種虛擬環境。
就像 Python 開發人員通常創建一個 Python 包的虛擬環境,然後他們啟動它,
nix-shell
可用於創建 Nix 包管理器中可用的任何包的虛擬環境;一種工具,允許使用者下載和啟動虛擬外殼環境,其中包含開發某些軟體所需的軟體包,而不會污染使用者或系統環境。在不影響背景的情況下,我的問題是:
nix-shell
Guix 包管理器是否有可用的等價物?
現在有
guix shell
。$ guix shell hello
為您帶來全新的環境,其中
hello
安裝了軟體包。它是guix environment --ad-hoc
.如果您更希望依賴(
hello
例如,開始開發它),那麼您所需要的只是簡單的:$ guix shell -D hello
我想你正在尋找
guix environment --ad-hoc
. 例如:guix environment --ad-hoc python python-pandas
這會創建一個安裝了 Python 和 Pandas 的臨時 Guix 配置文件,但同樣可以是 Guix 中的任何其他包。特別是對於 Python,您需要包括在內
python
,以便它知道python-pandas
. 以上為您提供了一個臨時配置文件,它仍然可以訪問目前使用者和系統配置文件中的現有環境變數和包。對於更孤立(因此可重現)的環境,您可以使用
--pure
隱藏現有的環境變數、使用者配置文件和系統配置文件:guix environment --pure --ad-hoc [packages]
對於完全容器化的隔離,它允許您限製文件系統和網路訪問:
guix environment --container --ad-hoc [packages]
最後兩個選項將要求您明確指定大量更基本的包,例如
coreutils
;更多的努力,但更可重複。有關更多資訊,請參閱呼叫 guix 環境。
我還使用了一個名為的程序,該程序
direnv
會自動啟動/停用各種項目的這些配置文件和其他環境變數。您為您的項目創建一個.envrc
文件,如下所示:use guix --ad-hoc python python-matplotlib python-html5lib python-mypy python-flake8 source ~/.virtualenvs/base-django-py38/bin/activate export DJANGO_SETTINGS_MODULE=project.settings.dev
這
use guix
是 direnv 的自定義功能,僅簡要記錄。