2

で次の環境を定義しましたdefault.nix

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

を実行するとnix-shellpythonシステム python at /usr/bin/python(Ubuntu で実行中)のままになりpython3ますが、 は Nix によってインストールされた Python 3.5 バイナリへのシンボリック リンクです。pythonNix Python 3.5 を指すように環境を定義する方法はありますか?

4

2 に答える 2

1

簡単な解決策の 1 つは、環境にシェル フックを追加して、エイリアス from を定義するpythonことpython3です。このエイリアスは、次を実行した場合にのみアクティブになりますnix-shell

with import <nixpkgs> {};
stdenv.mkDerivation rec {
  name = "env";
  env = buildEnv { name = name; paths = buildInputs; };
  buildInputs = [
    python35
    python35Packages.pyyaml
  ];
  # Customizable development shell setup
  shellHook = ''
    alias python='python3'
  '';
}
于 2016-10-13T09:10:15.913 に答える