假设我有一个my_env
包含大量二进制和 python 包的环境。
然后我这样做:
spack env activate my_env
然后我LD_LIBRARY_PATH
将包含
$spack_root/var/spack/environments/my_env/.spack-env/view/lib
并将PYTHONPATH
包含
$spack_root/var/spack/environments/my_env/.spack-env/view/lib/python3.9/site-packages
这意味着我可以通过其文件系统视图访问环境的包。到目前为止,一切都很好。
问题是PYTHONPATH
它还包含包的显式路径,例如
/my_spack_packages/opt/linux-centos7-broadwell/gcc-10.2.0/py-numpy-1.20.1-2b7n6tawarpant2tdesz4mv2bcpbukna/lib/python3.9/site-packages
/my_spack_packages/opt/linux-centos7-broadwell/gcc-10.2.0/py-setuptools-50.3.2-n5jsh4xzjpfxgqjdevvwvo2jusc5l4rb/lib/python3.9/site-packages
/my_spack_packages/opt/linux-centos7-broadwell/gcc-10.2.0/py-pyparsing-2.4.7-igeoalsmtb26rpq7y5cavriorrquph4h/lib/python3.9/site-packages
/my_spack_packages/linux-centos7-broadwell/gcc-10.2.0/py-python-dateutil-2.8.0-mrysqsgig4qprxulqqd6ds2y5v6bvaha/lib/python3.9/site-packages
... [ a lot more here ] ...
在我看来,这些路径是多余的,因为 python 解释器已经可以通过
$spack_root/var/spack/environments/my_env/.spack-env/view/lib/python3.9/site-packages
小路。那么为什么它会被所有这些路径超载呢?加载环境时有没有办法删除它们?
注意:我想知道这是否是由于这对于RPATH
是可能的LD_LIBRARY_PATH
,但在我看来,RPATH
这里没有必要,因为文件系统视图中也存在依赖项......