什么是一种可靠的方式,在nix中为virtualenv python包包含库?

2024-04-25 17:06:09 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我要说virtualenv在这里基本上是一个需求,因为Nix还没有被开发团队的其他成员使用。这个excellent guide on Python in Nix并没有深入到这个特定的问题。你知道吗

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

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

更糟糕的是,这里的${ggc6}/lib不适合我,因为我需要库(李白。所以)在*-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

Tags: pathstore目录virtualenvlibusrlocalnix
1条回答
网友
1楼 · 发布于 2024-04-25 17:06:09

我不太使用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输出是要查看的正确输出)。你知道吗

相关问题 更多 >