我首先要说 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