Nixos:jupyterノートブックにdepsをインストールする方法は?

Nixos:jupyterノートブックにdepsをインストールする方法は?

NixOsにJupyterノートブックをインストールしようとしていますが、numpyや他のライブラリをjupyterにインストールする方法が見つかりませんでした。これで、次のようなものを追加しましたconfiguration.nix

{ config, pkgs, ... }:
let
  python3-with-my-packages =
    pkgs.python3.withPackages (python-packages: with python-packages; [
      numpy
  ]);
in
{
  environment.systemPackages = with pkgs; [
    python3-with-my-packages
    jupyter
  ];
  [...]
}

答え1

小さなJupyter Notebookshell.nixファイルは次のとおりです。

with import <nixpkgs> {};

(pkgs.python3.withPackages (ps: with ps; [
    ipykernel jupyterlab
    matplotlib numpy pandas seaborn
    networkx
  ])).env

まずshell.nix、変更されたバージョンのファイルをプロジェクトディレクトリにコピーして実行しますnix-shell --run "jupyter lab"

答え2

これが最善の解決策であると言うわけではありませんが、パッケージが私たちに必要なパッケージではないようです。代わりにPythonパッケージをdepsリストにjupyter追加したいと思います。notebook

{ config, pkgs, ... }:
let
  python3-with-my-packages =
    pkgs.python3.withPackages (python-packages: with python-packages; [
      numpy
      notebook
  ]);
in
{
  environment.systemPackages = with pkgs; [
    python3-with-my-packages
  ];
  [...]
}

これが行く道ではないか、より良い解決策があれば教えてください!

答え3

このトピックを確認することもできます。バッテリー付きのJupyterノートパソコンNixOS Discourse の Jupyter Notebook の Nixy 依存関係の管理に関するいくつかの議論です。

Nix以外の環境と互換性がある場合は、mkPoetryEnv次の助けを借りてNixOSでPoetryを使用する方法を見つけましたbuildFHSUserEnv

Poetryプロジェクトの最上位ディレクトリに2つのファイルを配置するだけです。

poetry-env.nix

{pkgs ? import <nixpkgs> {} }:
let
  lib = pkgs.lib;
  poetry2nix = pkgs.poetry2nix;
  python37 = pkgs.python37;
in
  poetry2nix.mkPoetryEnv {
    python = python37;
    pyproject = ./pyproject.toml;
    poetrylock = ./poetry.lock;
  }

poetry-env-fhs.nix

{
  pkgs ? import <nixpkgs> {},
  # This allows us to provide a command to run via `--argstr run COMMAND`.
  run ? "bash"
}:
let
  poetry-env = import ./poetry-env.nix { };
in
  with pkgs; (buildFHSUserEnv {
    name = "poetry-env-fhs";
    targetPkgs = pkgs: with pkgs; [
      # curl
      # git
      gcc
      gnumake
      python37Packages.poetry
      pandoc # for pdf conversion
      texlive.combined.scheme-full # for pdf conversion
      which # a convenient tool in vertualized environments
    ] ++ [
      poetry-env
    ];
    runScript = "${run}";
    profile = ''
      # export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
      # export GIT_SSL_CAINFO="$SSL_CERT_FILE"
      # export LANG=C.UTF-8
    '';
  }).env

nix-build ./poetry-env.nixmkPoetryEnvはパッケージのビルドにかなり長い時間がかかるため、ビルド結果がGCで処理されないようにすることをお勧めします。

Jupyterノートブックの依存関係を管理するためのPoetryの使用

答え4

ここでは、NixosでJuypterを使用する方法についての素晴らしい記事です。

https://www.tweag.io/blog/2019-02-28-jupyter-with/

関連情報