You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在flake.nix定义的Jupyter服务器中安装Python包?权限问题求助

解决Nix Jupyter环境中pip安装权限问题

我想跟着Colab上的教程跑代码,但不想注册谷歌账号,于是用Nix搭了Jupyter服务器,flake.nix配置如下:

{
  inputs = {
    nixpkgs = {
      url = "github:nixos/nixpkgs/nixos-unstable";
    };
    flake-utils = {
      url = "github:numtide/flake-utils";
    };
  };
  outputs = { nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system:
    let
      pkgs = import nixpkgs {
        inherit system;
      };
    in rec {
      devShell = pkgs.mkShell {
        buildInputs = with pkgs; [
          (python3.withPackages(ps: with ps; [
            ipython
            matplotlib
            tensorflow
            python3Packages.opencv4
            python3Packages.pip
            pillow
            scipy
          ]))
        ];
        shellHook = "jupyter notebook";
      };
    }
  );
}

执行nix develop启动服务器后,在Notebook里运行以下代码时:

!pip install -q xplique

import numpy as np
from matplotlib import pyplot as plt
import tensorflow as tf
from math import ceil
import cv2

%matplotlib inline
%config InlineBackend.figure_format='retina'

import xplique
from xplique.plots import plot_attributions

出现权限错误:

ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/nix/store/a7k1ggpnhsrzpfcsw3dyw12kzl7j2vq5-python3-3.10.10-env/lib/python3.10/site-packages/tifffile'
Check the permissions.


方案1:将xplique添加到flake.nix的依赖列表(推荐)

Nix构建的Python环境位于只读的/nix/store目录,无法直接通过pip修改。最贴合Nix工作流的方式是直接在flake配置中声明xplique作为依赖:

修改flake.nix中python3.withPackages的包列表,添加xplique:

(python3.withPackages(ps: with ps; [
  ipython
  matplotlib
  tensorflow
  python3Packages.opencv4
  python3Packages.pip
  pillow
  scipy
  xplique  # 新增该行
]))

修改完成后,重新执行nix develop启动Jupyter。此时xplique已被预装,无需再用pip安装,直接运行导入代码即可。

方案2:使用Python虚拟环境临时安装

如果不想修改flake配置,可以通过虚拟环境隔离安装:

  1. 在Notebook的第一个单元格运行以下命令创建并激活虚拟环境,安装xplique:
!python -m venv ./myenv
!source ./myenv/bin/activate && pip install -q xplique
  1. 重启Jupyter内核(点击页面顶部菜单栏的「Kernel」→「Restart」)
  2. 重启后,在单元格中添加虚拟环境的包路径,再导入所需库:
import sys
sys.path.insert(0, './myenv/lib/python3.10/site-packages')

import numpy as np
from matplotlib import pyplot as plt
import tensorflow as tf
from math import ceil
import cv2

%matplotlib inline
%config InlineBackend.figure_format='retina'

import xplique
from xplique.plots import plot_attributions

内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:23:39