使用 pip 后,出现错误“Scikit-learn 尚未正确构建”

问题描述 投票:0回答:4

我正在使用 Jetson Nano,并且我已经尝试重新安装tensorflow(尝试了不同版本)和numpy(也尝试了不同版本)。我正在使用

pip3
命令,因为我使用的是
python3
(版本 3.6.9)。 降级一切都不起作用,因为 Keras 需要tensorflow >2.2 我还尝试使用
--force-reinstall
标志重新安装 scikit-learn。 因为它可能会有所帮助,所以这是我在尝试运行程序时收到的完整错误消息:

    Traceback (most recent call last):
  File "/home/nano/.local/lib/python3.6/site-packages/sklearn/__check_build/__init__.py", line 44, in <module>
    from ._check_build import check_build  # noqa
ImportError: /home/nano/.local/lib/python3.6/site-packages/sklearn/__check_build/../../scikit_learn.libs/libgomp-d22c30c5.so.1.0.0: cannot allocate memory in static TLS block

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "LSTMMVMSTSF.py", line 4, in <module>
    import sklearn
  File "/home/nano/.local/lib/python3.6/site-packages/sklearn/__init__.py", line 81, in <module>
    from . import __check_build  # noqa: F401
  File "/home/nano/.local/lib/python3.6/site-packages/sklearn/__check_build/__init__.py", line 46, in <module>
    raise_build_error(e)
  File "/home/nano/.local/lib/python3.6/site-packages/sklearn/__check_build/__init__.py", line 41, in raise_build_error
    %s""" % (e, local_dir, ''.join(dir_content).strip(), msg))
ImportError: /home/nano/.local/lib/python3.6/site-packages/sklearn/__check_build/../../scikit_learn.libs/libgomp-d22c30c5.so.1.0.0: cannot allocate memory in static TLS block
___________________________________________________________________________
Contents of /home/nano/.local/lib/python3.6/site-packages/sklearn/__check_build:
__init__.py               _check_build.cpython-36m-aarch64-linux-gnu.so__pycache__
setup.py
___________________________________________________________________________
It seems that scikit-learn has not been built correctly.

If you have installed scikit-learn from source, please do not forget
to build the package before using it: run `python setup.py install` or
`make` in the source directory.

If you have used an installer, please check that it is suited for your
Python version, your operating system and your platform.

编辑:我忘记添加有关 scikit-learn 安装的信息。我用过

sudo pip3 install scikit-learn
。该期的日志:

sudo pip3 install scikit-learn  Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting scikit-learn
  Downloading scikit_learn-0.24.2-cp36-cp36m-manylinux2014_aarch64.whl (24.0 MB)
     |████████████████████████████████| 24.0 MB 20.5 MB/s
Requirement already satisfied: threadpoolctl>=2.0.0 in /home/nano/.local/lib/python3.6/site-packages (from scikit-learn) (2.1.0)
Requirement already satisfied: joblib>=0.11 in /home/nano/.local/lib/python3.6/site-packages (from scikit-learn) (1.0.1)
Requirement already satisfied: numpy>=1.13.3 in /home/nano/.local/lib/python3.6/site-packages (from scikit-learn) (1.19.0)
Requirement already satisfied: scipy>=0.19.1 in /home/nano/.local/lib/python3.6/site-packages (from scikit-learn) (1.5.4)
Installing collected packages: scikit-learn
Successfully installed scikit-learn-0.24.2
python python-3.x tensorflow scikit-learn
4个回答
4
投票

我在另一篇文章中找到了答案:

安装没有实际问题,只需更改导入顺序即可。就我而言,我必须首先导入

sklearn
。进一步阅读这里


4
投票

对于那些无法更改导入顺序的人(例如,使用sklearn的库会引发错误),我通过将环境变量

LD_PRELOAD
设置为
libgomp-d22c30c5.so.1.0.0
的路径解决了这个问题。

export LD_PRELOAD='/PATH/TO/libgomp-d22c30c5.so.1.0.0'

并再次执行程序。


0
投票

您需要安装特定于aarch64架构的tensorflow whl。 nvidia 在以下位置提供了适用于 aarch64 的预构建张量流二进制文件

https://developer.download.nvidia.com/compute/redist/jp/v44/

此链接适用于 jetpack 4.4 (v44)。根据您使用的jetpack版本更新链接。


0
投票

当我在一个 Python Django 项目中使用另一个库“sentence_transformer”时,我遇到了这个问题。 对我来说,解决方案是在manage.py文件顶部导入SentenceTransformer

© www.soinside.com 2019 - 2024. All rights reserved.