我正在尝试在 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 处理。
答案4
这里有一篇关于使用 Juypter 和 Nixos 的精彩文章。