【问题标题】:I can import scikit-learn, but I can't use it我可以导入 scikit-learn,但我不能使用它
【发布时间】:2021-08-16 14:48:00
【问题描述】:

每当我尝试运行一个程序时,前 8 行在哪里

import pandas as pd
import numpy as np
import keras
import sklearn
from math import sqrt
from matplotlib import pyplot
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split

我收到了回复It seems that scikit-learn has not been built correctly.

但是手动(一个接一个)运行它似乎可以工作

Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sklearn
>>> from sklearn.metrics import mean_squared_error
>>> from sklearn.model_selection import train_test_split
>>> from math import sqrt
>>> from matplotlib import pyplot
>>> import pandas
>>> import numpy
>>> import keras
2021-05-28 12:38:06.355731: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.2
>>> exit()

为什么会发生这种情况,我该如何解决?我已经尝试重新安装每个软件包(也在不同的版本上)

编辑:我错过了添加信息,这是在 Jetson Nano 上运行的,所以操作系统是 Linux,编译器是默认的(程序通过 SSH 运行)。使用python3 -VV 时,它会响应Python 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0],而且我没有使用虚拟环境,也没有使用pip3 以外的其他包管理器。已使用命令sudo pip3 install scikit-learn 安装了 Sci-kit 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

完整的错误信息:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/sklearn/__check_build/__init__.py", line 44, in <module>
    from ._check_build import check_build  # noqa
ImportError: /usr/local/lib/python3.6/dist-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 "/usr/local/lib/python3.6/dist-packages/sklearn/__init__.py", line 81, in <module>
    from . import __check_build  # noqa: F401
  File "/usr/local/lib/python3.6/dist-packages/sklearn/__check_build/__init__.py", line 46, in <module>
    raise_build_error(e)
  File "/usr/local/lib/python3.6/dist-packages/sklearn/__check_build/__init__.py", line 41, in raise_build_error
    %s""" % (e, local_dir, ''.join(dir_content).strip(), msg))
ImportError: /usr/local/lib/python3.6/dist-packages/sklearn/__check_build/../../scikit_learn.libs/libgomp-d22c30c5.so.1.0.0: cannot allocate memory in static TLS block
___________________________________________________________________________
Contents of /usr/local/lib/python3.6/dist-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.

【问题讨论】:

  • 请提供有关您系统的更多信息。你的操作系统是什么?您使用的是虚拟环境还是 pip 以外的其他包管理器?你是如何安装 scikit-learn 包的?发布您从安装包中获得的日志记录。
  • @DiegoPalacios 我已经编辑了问题,感谢您让我注意到
  • 运行脚本时的完整错误是什么?您是否从可能与 sklearn 名称冲突的地方运行它?
  • @CJR 我已经用完整的错误消息更新了这个问题。它不应该有任何碰撞。它在机器的桌面和文件夹内运行,没有其他文件在其名称中包含任何与 sklearn 相关的内容,甚至是其内容
  • @CJR 非常感谢!该链接帮助我弄清楚了。问题实际上只是进口的顺序。现在我将其更改为先导入 sklearn 并且它可以工作。如果您将其发布为答案,我很乐意接受。

标签: python numpy scikit-learn sklearn-pandas


【解决方案1】:

这个答案似乎是相关的: https://stackoverflow.com/a/66601542/4352317

“新版本似乎是在 OS X>10.15 上构建的(.dylibs/libomp.dylib(为 Mac OS X 10.15 构建)这个问题可能发生在较低版本的 Mac OS 上(我有 10.13.6)

要么升级你的 mac,要么使用较低版本的 scikit-image(0.17.2 或 0.17.1)"

pip install -U scikit-image==0.17.2  

【讨论】:

  • 我已经更新了问题;这是在 Jetson Nano 上运行的,所以操作系统是 Linux
猜你喜欢
  • 2021-07-21
  • 2018-03-21
  • 2015-08-06
  • 2017-02-11
  • 1970-01-01
  • 2012-07-12
  • 2015-12-09
  • 1970-01-01
  • 2013-04-25
相关资源
最近更新 更多