突然无法调用scikit-learn、xgboost

遇到的错误包含:

python 复制代码
  File "<string>", line 3, in <module>
  File "/usr/anaconda3/envs/py37/lib/python3.7/site-packages/sklearn/__init__.py", line 81, in <module>
    from . import __check_build  # noqa: F401
  File "/usr/anaconda3/envs/py37/lib/python3.7/site-packages/sklearn/__check_build/__init__.py", line 50, in <module>
    raise_build_error(e)
  File "/usr/anaconda3/envs/py37/lib/python3.7/site-packages/sklearn/__check_build/__init__.py", line 43, in raise_build_error
    % (e, local_dir, "".join(dir_content).strip(), msg)
ImportError: dlopen: cannot load any more object with static TLS
___________________________________________________________________________
Contents of /usr/anaconda3/envs/py37/lib/python3.7/site-packages/sklearn/__check_build:
__init__.py               setup.py                  _check_build.cpython-37m-x86_64-linux-gnu.so
__pycache__
___________________________________________________________________________
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.
python 复制代码
  File "<string>", line 5, in <module>
  File "/usr/anaconda3/envs/py37/lib/python3.7/site-packages/xgboost/__init__.py", line 6, in <module>
    from .core import (
  File "/usr/anaconda3/envs/py37/lib/python3.7/site-packages/xgboost/core.py", line 231, in <module>
    _LIB = _load_lib()
  File "/usr/anaconda3/envs/py37/lib/python3.7/site-packages/xgboost/core.py", line 197, in _load_lib
    """
xgboost.core.XGBoostError: 
XGBoost Library (libxgboost.so) could not be loaded.
Likely causes:
  * OpenMP runtime is not installed
    - vcomp140.dll or libgomp-1.dll for Windows
    - libomp.dylib for Mac OSX
    - libgomp.so for Linux and other UNIX-like OSes
    Mac OSX users: Run `brew install libomp` to install OpenMP runtime.

  * You are running 32-bit Python on a 64-bit OS

Error message(s): ['dlopen: cannot load any more object with static TLS']

解决办法:

在脚本最开头加如下代码

python 复制代码
# 添加在最顶部
import ctypes
import os

# 强制预加载关键库(先于任何其他导入)
# ctypes.CDLL('libgomp.so.1', mode=ctypes.RTLD_GLOBAL)
# 强制预加载 OpenMP 库
try:
    ctypes.CDLL('libgomp.so.1', mode=ctypes.RTLD_GLOBAL)
except OSError:
    # 如果上述失败,尝试指定具体路径
    ctypes.CDLL('/usr/anaconda3/envs/py37/lib/libgomp.so.1', mode=ctypes.RTLD_GLOBAL)

ctypes.CDLL('libpthread.so.0', mode=ctypes.RTLD_GLOBAL)

# 设置OpenMP环境变量
os.environ["OMP_NUM_THREADS"] = "1"
os.environ["MKL_NUM_THREADS"] = "1"
os.environ["KMP_INIT_AT_FORK"] = "FALSE"

# # 恢复导入路径(如有必要)
# import sys
# sys.path.insert(0, '/usr/anaconda3/envs/py37/lib/python3.7/site-packages')

# 以下是你的原始代码...
import sklearn  # 这行应该在预加载后
import xgboost
相关推荐
Moshow郑锴1 小时前
机器学习相关算法:回溯算法 贪心算法 回归算法(线性回归) 算法超参数 多项式时间 朴素贝叶斯分类算法
算法·机器学习·回归
HAPPY酷2 小时前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
传奇开心果编程2 小时前
【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
python·学习·ui·前端框架·自动化
王者鳜錸4 小时前
PYTHON让繁琐的工作自动化-PYTHON基础
python·microsoft·自动化
key_Go4 小时前
7.Ansible自动化之-实施任务控制
python·ansible·numpy
wyiyiyi11 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
mit6.82412 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
没有bug.的程序员12 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋12 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
AntBlack13 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt