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 Notebook 的小shell.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

我并不是说这是最好的解决方案,但似乎该jupyter包不是我们需要的包,而是我们只想将 python 包添加notebook到 deps 列表中:

{ 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 项目的顶级目录中即可:

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

由于 mkPoetryEnv 构建包需要相当长的时间,因此您可能希望 nix-build ./poetry-env.nix保持构建结果不被 GC 处理。

使用 Poetry 进行 Jupyter 笔记本依赖管理

答案4

这里有一篇关于使用 Juypter 和 Nixos 的精彩文章。

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

相关内容