繁体   English   中英

导入错误:/usr/lib/aarch64-linux-gnu/libstdc++.so.6:找不到版本“GLIBCXX_3.4.30”

[英]ImportError: /usr/lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found

我在 miniconda3 的 linux aarch64 架构中安装了package 当我 import knee inside python 时,出现以下错误

 import kneed
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/kneed/__init__.py", line 4, in <module>
    from .knee_locator import KneeLocator
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/kneed/knee_locator.py", line 3, in <module>
    from scipy.signal import argrelextrema
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/signal/__init__.py", line 309, in <module>
    from . import _sigtools, windows
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/signal/windows/__init__.py", line 41, in <module>
    from ._windows import *
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/signal/windows/_windows.py", line 7, in <module>
    from scipy import linalg, special, fft as sp_fft
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/__init__.py", line 211, in __getattr__
    return _importlib.import_module(f'scipy.{name}')
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/fft/__init__.py", line 92, in <module>
    from ._helper import next_fast_len
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/fft/_helper.py", line 3, in <module>
    from ._pocketfft import helper as _helper
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/fft/_pocketfft/__init__.py", line 3, in <module>
    from .basic import *
  File "/home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/fft/_pocketfft/basic.py", line 6, in <module>
    from . import pypocketfft as pfft
ImportError: /usr/lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/su/miniconda3/envs/myenv/lib/python3.10/site-packages/scipy/fft/_pocketfft/pypocketfft.cpython-310-aarch64-linux-gnu.so)

当我检查 libstdc++.so.6 时,

ls /usr/lib/aarch64-linux-gnu | grep libstdc++.so.6
libstdc++.so.6
libstdc++.so.6.0.28

我可以知道我知道安装任何 package 来解决ImportError吗?

以下是我安装的包

Package                      Version
---------------------------- ------------
absl-py                      1.2.0
appdirs                      1.4.4
astunparse                   1.6.3
attrs                        22.1.0
audioread                    2.1.9
cachetools                   5.2.0
certifi                      2022.6.15
cffi                         1.15.1
charset-normalizer           2.1.0
cycler                       0.11.0
decorator                    5.1.1
distlib                      0.3.5
docopt                       0.6.2
filelock                     3.8.0
flatbuffers                  2.0
fonttools                    4.34.4
fpdf                         1.7.2
gast                         0.4.0
google-auth                  2.10.0
google-auth-oauthlib         0.4.6
google-pasta                 0.2.0
grpcio                       1.47.0
h5py                         3.7.0
hdfs                         2.7.0
idna                         3.3
joblib                       1.1.0
jsonschema                   4.9.1
keras                        2.9.0
Keras-Preprocessing          1.1.2
kiwisolver                   1.4.4
kneed                        0.8.1
libclang                     14.0.6
librosa                      0.9.2
llvmlite                     0.39.0
logger                       1.4
Markdown                     3.4.1
MarkupSafe                   2.1.1
matplotlib                   3.5.2
numba                        0.56.0
numpy                        1.22.0
oauthlib                     3.2.0
opt-einsum                   3.3.0
packaging                    21.3
pandas                       1.4.3
Pillow                       9.2.0
pip                          22.2.2
platformdirs                 2.5.2
pooch                        1.6.0
protobuf                     3.19.4
pyasn1                       0.4.8
pyasn1-modules               0.2.8
pycparser                    2.21
pyparsing                    3.0.9
pyrsistent                   0.18.1
python-dateutil              2.8.2
python-Levenshtein           0.12.2
pytz                         2022.1
PyYAML                       6.0
rdp                          0.8
requests                     2.28.1
requests-oauthlib            1.3.1
resampy                      0.4.0
rsa                          4.9
scikit-learn                 1.1.2
scipy                        1.9.0
seaborn                      0.11.2
setuptools                   63.4.3
six                          1.16.0
SoundFile                    0.10.3.post1
tensorboard                  2.9.1
tensorboard-data-server      0.6.1
tensorboard-plugin-wit       1.8.1
tensorflow                   2.10.0rc0
tensorflow-cpu-aws           2.10.0rc0
tensorflow-estimator         2.9.0
tensorflow-io-gcs-filesystem 0.26.0
termcolor                    1.1.0
threadpoolctl                3.1.0
typing_extensions            4.3.0
urllib3                      1.26.11
virtualenv                   20.16.3
watchdog                     2.1.9
Werkzeug                     2.2.2
wheel                        0.37.1
wrapt                        1.14.1

此外,包kears, kneed, librosa, seaborn, sklearn and tensorflow也给出相同的错误。 我不确定在哪里以及如何检查 package 版本的依赖性。 请问我怎么知道哪些版本兼容numpy版本? 我应该为kears, kneed, librosa, seaborn, sklearn, tensorflow and numpy安装哪些版本,使用 pip 安装在miniconda3中。

通过 conda 安装 gcc 12.1,如下所示:

conda install gcc=12.1.0

通过设置适当的环境变量,确保其库位于库搜索路径中:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/miniconda3/lib

(使用特定 conda 环境的lib也可能有效: $HOME/miniconda3/env/YOUR_ENV_NAME/lib

然后启动您的 Python 脚本。

实际上版本“GLIBCXX_3.4.30”存在但不在他们正在搜索的文件夹中。您需要做的是通过以下方式找到该文件夹:

sudo find / -name "libstdc++.so.6*"

它会显示系统中的许多文件,选择最大的一个,即末尾带有“libstdc++.so.6.0.30”的那个。 检查它是否包含您要查找的版本:

strings /usr/local/share/miniconda/envs/ffcv/lib/libstdc++.so.6.0.30 | grep GLIBCXX

如果它在那里,您需要复制它并通过以下方式删除原始的:

sudo cp /usr/local/share/miniconda/pkgs/libstdcxx-ng-12.2.0-h46fd767_19/lib/libstdc++.so.6.0.30 /usr/lib/x86_64-linux-gnu/

sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6

sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

你在那里。 希望能帮助到你..

这对我有用。 它在 /usr/lib/aarch64-linux-gnu 中查找,而正确的版本在 $HOME/anaconda3/lib 中可用。

您可以使用以下确保它在 anaconda3/lib 下可用

sudo find / -name "libstdc++.so.6.0.30"

要修复,请使用正确的路径更新环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/anaconda3/lib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM