0

我首先要说 virtualenv 基本上是这里的一个要求,因为 Nix 还没有被开发团队的其他成员使用。这份关于 Nix 中 Python 的优秀指南并没有深入探讨这个特定问题。

在某些情况下,我可以更新LD_LIBRARY_PATH,但由于 Python 的动态特性,它变得相当乏味并且可能容易出错(特定分支可能会触发使用以前未包含在 中的库LD_LIBRARY_PATH):

  shellHook = ''
    export LD_LIBRARY_PATH=${mysql57}/lib:${gcc6}/lib:$LD_LIBRARY_PATH
  '';

更糟糕的是,${ggc6}/lib这里对我不起作用,因为我需要的库(libatomic.so)在*-gcc-6.4.0-lib/lib目录下,而不是*-gcc-6.4.0/lib目录下,我不确定如何引用前者。

$ echo $LD_LIBRARY_PATH                                                                                                                                                                                                                                                                                                                                                                                                                                              
/nix/store/x3x3si0pc3w0vam9jj308b0qhcv7zlg2-mysql-5.7.19/lib:/nix/store/mc8p626zjk9zlgji1i8f85nax4c62nrj-gcc-wrapper-6.4.0/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 

find for libatomic 的一些输出:

/nix/store/rww78vdn2rkayrnqsjl8ib5iq2vfm3sw-gcc-6.4.0/lib/libatomic.a                                                                                                                                                                                                                                                                                                                                                                                                                                    
/nix/store/klqzvvcy1xyjjflmf7agryayc4s72jg2-gcc-6.4.0-lib/lib/libatomic.so.1                                                                                                                                                                                                                                                                                                                                                                                                                             
/nix/store/klqzvvcy1xyjjflmf7agryayc4s72jg2-gcc-6.4.0-lib/lib/libatomic.so                                                                                                                                                                                                                                                                                                                                                                                                                               
/nix/store/klqzvvcy1xyjjflmf7agryayc4s72jg2-gcc-6.4.0-lib/lib/libatomic.la                                                                                                                                                                                                                                                                                                                                                                                                                               
/nix/store/klqzvvcy1xyjjflmf7agryayc4s72jg2-gcc-6.4.0-lib/lib/libatomic.so.1.2.0
4

1 回答 1

0

我不经常使用 nixpkgs Python 基础设施,所以我不确定是否有办法消除设置LD_LIBRARY_PATH. 设置建议:

  • 您可以使用它lib.makeLibraryPath来使该过程变得不那么乏味。如果您知道所有可能需要的库(大部分)buildDepends无论如何,您可以使用lib.makeLibraryPath (buildDepends ++ [ anything else ]).
  • GCC 库的问题与 Nix 需要 GCC 的包装版本有关,因此pkgs.gcc6“原始”GCC 派生不是。您可以使用 gcc6.cc.lib,或者,如果您正在使用makeLibraryPath,就gcc6.cc足够了(因为makeLibraryPath会自动确定lib输出是要查看的正确输出)。
于 2018-07-03T17:29:25.043 回答