マニュアルページでは、次のようにnix-shell
説明します。
Nix は、 nix-shell コマンドを使用して仮想環境の一種を提供するために使用できます。
Python開発者が通常Pythonパッケージ用の仮想環境を作成してアクティブ化するのと同様に、nix-shell
これはユーザーが仮想シェル環境をダウンロードして有効にするためのツールであるNixパッケージマネージャで利用可能なすべてのパッケージ用の仮想環境を作成しますに使用できます。 、ユーザーやシステム環境を汚染することなく特定のソフトウェアを開発するために必要なパッケージが含まれています。
私の質問は:nix-shell
Guixパッケージマネージャに対応するツールがありますか?
答え1
持つguix shell
今。
$ guix shell hello
hello
パッケージがインストールされた新しい環境を提供します。これは「ドロップイン」代替品ですguix environment --ad-hoc
。
もっと欲しいなら依存関係(たとえばhello
開発を開始するには)必要なものは次のとおりです。
$ guix shell -D hello
答え2
私はあなたが探していると思います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]
最後の2つのオプションでは、より多くの基本パッケージを明示的に指定する必要があります。つまり、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 のカスタム機能です。簡単な記録。