我首先要说virtualenv基本上是一个要求,因为Nix尚未被开发团队的其他人使用。这个excellent guide on Python in Nix并没有完全深入到这个特定的问题。
在某些情况下,我可以更新LD_LIBRARY_PATH
,但由于Python的动态特性,它会变得相当繁琐并且可能容易出错(特定分支可能触发使用以前未包含在{{{ 1}}):
LD_LIBRARY_PATH
更糟糕的是, shellHook = ''
export LD_LIBRARY_PATH=${mysql57}/lib:${gcc6}/lib:$LD_LIBRARY_PATH
'';
在这里对我不起作用,因为我需要的库(libatomic.so)位于${ggc6}/lib
目录下,而不是*-gcc-6.4.0-lib/lib
目录下,而我我不确定如何引用前者。
*-gcc-6.4.0/lib
find for libatomic的一些输出:
$ 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
答案 0 :(得分:0)
我不太使用nixpkgs Python基础结构,所以我不确定是否有消除设置LD_LIBRARY_PATH
的方法。设置建议:
lib.makeLibraryPath
来简化该过程。如果您知道所有可能需要的库(大部分)仍然位于buildDepends
中,则可以使用lib.makeLibraryPath (buildDepends ++ [ anything else ])
。pkgs.gcc6
并不是GCC的原始版本。您可以使用gcc6.cc.lib
,或者,如果您使用的是makeLibraryPath
,只需gcc6.cc
就足够了(因为makeLibraryPath
会自动得出lib
输出是正确的下一个。)