python - 如何定义默认为 Python 3.5 的 Nix 环境

标签 python nix

我在default.nix中定义了以下环境:

with import <nixpkgs> {};
stdenv.mkDerivation rec {
  name = "env";
  env = buildEnv { name = name; paths = buildInputs; };
  buildInputs = [
    python35
    python35Packages.pyyaml
  ];
}

如果我运行 nix-shellpython 仍将是 /usr/bin/python 中的系统 python(在 Ubuntu 上运行)而 python3 是 Nix 安装的 Python 3.5 二进制文件的符号链接(symbolic link)。有没有办法定义环境,使 python 指向 Nix Python 3.5?

最佳答案

您可以使用 runCommand 创建仅包含 python 符号链接(symbolic link)的新派生。

with import <nixpkgs> {};
stdenv.mkDerivation rec {
  name = "env";
  env = buildEnv { name = name; paths = buildInputs; };
  buildInputs = [
    (runCommand "python-alias" {} ''
      mkdir -p $out/bin
      ln -s ${python35}/bin/python3 $out/bin/python
    '')
    python35
    python35Packages.pyyaml
  ];
}


nix-shell --pure --run 'python --version'
Python 3.5.3

关于python - 如何定义默认为 Python 3.5 的 Nix 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008731/

相关文章:

python - 替换python中的特定单词

python - 使用 RDFLib 获取 SPARQL 查询中的相交类

linux - 使用取消共享并仍在执行原始功能

python - 优化python中的递归

Python:线程还是多处理?

nix - 如何使用 Nix 搭建开发环境?

linux - 在 NixOS 上将 twitch lambdabot 配置为服务

python - 试图从/nix/store 中删除一个包,现在系统出现错误,如何修复?

nix - `nix-build hello.nix`时失败

python - 如何使用 Python 从 url 打开 .csv 文件?