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

如何用Nix Flake从源码引入包到Shell实现调试(等效python develop)

在Nix Flake中实现类似conda python setup.py develop的源码调试方案

你需要的是让Nix Shell直接链接本地源码而非复制到Nix Store,修改代码后无需重新构建即可生效,以下是两种可行的Flake配置方案:

方案一:使用developPackage(推荐)

nixpkgs提供了python3Packages.developPackage,专门用于创建Python包的开发环境,它会直接链接本地源码,而非复制构建。

修改你的flake.nix如下:

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
  outputs = { self, nixpkgs }:
  let
    system = "x86_64-linux";
    pkgs = import nixpkgs { inherit system; };
    # 使用developPackage替代buildPythonPackage
    python_library_dev = pkgs.python3Packages.developPackage {
      pname = "python_library";
      version = "0.1";
      src = ./python_library; # 用相对路径更灵活,也可以用绝对路径
      doCheck = false;
      # 声明依赖,和buildPythonPackage一致
      propagatedBuildInputs = with pkgs.python3Packages; [ numpy scipy matplotlib ];
    };
  in {
    # 配置devShell,直接进入开发环境
    devShell.${system} = pkgs.mkShell {
      packages = [
        python_library_dev
        pkgs.spyder
      ];
    };
  };
}

使用方式:

  1. 执行nix develop进入环境
  2. 修改本地python_library目录下的代码后,直接在Python中导入测试,无需重新构建

方案二:手动设置PYTHONPATH

如果不需要额外的构建逻辑,也可以直接在devShell中把本地源码目录加入Python的搜索路径,完全跳过Nix的包构建流程:

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
  outputs = { self, nixpkgs }:
  let
    system = "x86_64-linux";
    pkgs = import nixpkgs { inherit system; };
    # 基础Python环境,包含所需依赖
    python_env = pkgs.python3.withPackages(ps: [
      ps.numpy
      ps.scipy
      ps.matplotlib
    ]);
  in {
    devShell.${system} = pkgs.mkShell {
      packages = [
        python_env
        pkgs.spyder
      ];
      # 将本地源码目录加入PYTHONPATH
      shellHook = ''
        export PYTHONPATH="${./python_library}:$PYTHONPATH"
      '';
    };
  };
}

使用方式和方案一一致,进入nix develop后,修改源码立即生效。

说明

  • 方案一的developPackage会处理包的依赖、entry points等,更接近正式构建环境,适合需要完整开发流程的场景
  • 方案二更轻量化,适合快速调试简单包,无需处理Nix包构建的细节

内容的提问来源于stack exchange,提问作者Vera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:23:15