Nixos

时间:2015-09-27 18:58:24

标签: python psychopy nixos

我感兴趣的是一个可靠而强大的过程,用于将Psychopy库的python包和依赖项收集到一个集合或环境中,以实现自包含和可维护的安装。因为谷歌搜索Nixos和Python产生了许多方法,其中一些方法使用记录不良的函数,例如,推荐的方法也是很好的建议。 myEnvFun

Psychopy是一个用于心理学实验的python包。它有几个dependencies,其中大多数是python包,但不是全部(例如AVbin);其中大部分都在nixos包集合中,但不是全部(pyopy-parallel)。

我的目标是能够将所有需要的部分组合在一起,并通过单个安装请求提供有效的心理环境。我已经想出如何安装心理,但路径不好玩。

例如,如果以下内容保存为~/pkg/psychopy/default.nix

let
  pkgs = import <nixpkgs> {};
in
{stdenv ? pkgs.stdenv, python ? pkgs.python, fetchurl ? pkgs.fetchurl}:

with pkgs;
buildPythonPackage {
  name = "psychopy";

  src = fetchurl {
    url = http://sourceforge.net/projects/psychpy/files/PsychoPy/PsychoPy-1.82.02.zip;
    md5 = "52309280bdca4408970aab0952c674e4";
  };

  buildInputs = [
    python27
  ];

}

可以运行nix-env -f ~/pkg/ -iA psychopy并安装Psychopy,但它不会轻易使用,因为任何系统范围的python2安装都没有看到心理库的路径,甚至安装的python版本也没有。部分构建输入。

这导致了以下问题,尽管它们特别关注心理学,但更普遍适用于python和Nixos。

  1. 建议的做法是将nixos表达式集合中存在的python包(例如numpy和scipy)作为系统或用户范围的软件包或每个特定的实验库安装一次吗?
  2. 如果有人希望将一个python集合与nixos表达式通道之外的多个库捆绑在一起(例如psychopy和pyo和pyparallel),推荐的程序是什么?如果需要一些非python软件,这会如何改变,例如在这种情况下AVbin(实际上有安装说明,指的是我理解的Nixos中不标准的路径,即/ usr / lib)?
  3. 可以分享一些关于在Nixos上下文中处理Python的路径的讨论吗?

1 个答案:

答案 0 :(得分:1)

myEnvFun已被弃用,你在哪里读过它?

数目:

  1. 建议您使用nix-shell创建环境,您应该可以在~/pkg/psychopy/内运行并填充$PYTHONPATH

    Nix背后的想法不是拥有任何全球套装,而是满足每种需求的环境。

  2. 只需将AVBin声明为构建依赖项即可。请注意,您的用户需要安装Nix。如果你想避免这种情况,你需要编写一个与nix-shell类似的包装器。

  3. 这里没有多少事情发生。所有Nix软件包都是以孤立的chroot构建的。 Nix有一个名为setup hooks的概念,它是为依赖树中的每个包执行的。因此,对于Python包,调用https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/interpreters/python/2.7/setup-hook.sh#L15以填充$PYTHONPATH。对于命令行程序,我们然后用$PYTHONPATH硬编码包装生成的脚本。

  4. 讨论最好加入Freenode IRC频道#nixos