我感兴趣的是一个可靠而强大的过程,用于将Psychopy库的python包和依赖项收集到一个集合或环境中,以实现自包含和可维护的安装。因为谷歌搜索Nixos和Python产生了许多方法,其中一些方法使用记录不良的函数,例如,推荐的方法也是很好的建议。 myEnvFun
Psychopy是一个用于心理学实验的python包。它有几个dependencies,其中大多数是python包,但不是全部(例如AVbin);其中大部分都在nixos包集合中,但不是全部(pyo和py-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。
答案 0 :(得分:1)
myEnvFun
已被弃用,你在哪里读过它?
数目:
建议您使用nix-shell
创建环境,您应该可以在~/pkg/psychopy/
内运行并填充$PYTHONPATH
。
Nix背后的想法不是拥有任何全球套装,而是满足每种需求的环境。
只需将AVBin
声明为构建依赖项即可。请注意,您的用户需要安装Nix。如果你想避免这种情况,你需要编写一个与nix-shell
类似的包装器。
这里没有多少事情发生。所有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
硬编码包装生成的脚本。
讨论最好加入Freenode IRC频道#nixos