我在default.nix
中定义了以下环境:
with import <nixpkgs> {};
stdenv.mkDerivation rec {
name = "env";
env = buildEnv { name = name; paths = buildInputs; };
buildInputs = [
python35
python35Packages.pyyaml
];
}
如果我运行 nix-shell
,python
仍将是 /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/