我感兴趣的是一个可靠而健壮的过程,用于将psycopy库的python包和依赖项收集到一个集合或环境中,以进行自包含的、可维护的安装。另外,对于推荐的方法有一些一般性的建议是很好的,因为google Nixos和Python会产生很多方法,其中一些方法使用了文档不好的函数,例如myEnvFun
psychypy是一个用于心理学实验的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
并安装psycopy,但它不容易使用,因为任何系统范围的python2安装,甚至是作为构建输入一部分安装的python版本都看不到psycopy库的路径。在
这就引出了以下问题,尽管它们是关于精神病的,但它们更普遍地适用于python和Nixos。在
myEnvFun
已弃用,您在哪里读到的?在答案:
建议使用}。在
nix-shell
创建环境,您应该能够在~/pkg/psychopy/
内运行它并填充{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
硬编码来包装结果脚本。为了讨论,最好加入freenodeirc频道#nixos
相关问题 更多 >
编程相关推荐