如何解决python包的静态TLS块错误中无法分配内存

Posted

技术标签:

【中文标题】如何解决python包的静态TLS块错误中无法分配内存【英文标题】:how to solve cannot allocate memory in static TLS block error for python packages 【发布时间】:2021-09-12 09:24:26 【问题描述】:

我正在使用 ubuntu 20.04 和 conda 4.8.3。我已经使用pip (pip install --force-reinstall --no-cache-dir gmsh-dev) 在我的一个环境中安装了一个包,但是当我尝试在 jupyter 笔记本中导入包时,我遇到了以下错误:

OSError: /home/alid/miniconda3/envs/new_env/lib/python3.9/site-packages/gmsh-git-Linux64-sdk/lib/libgmsh.so: cannot allocate memory in static TLS block

我不知道我的问题是什么,感谢任何帮助。

【问题讨论】:

【参考方案1】:

基于how others solved similar problems,尝试添加到LD_PRELOAD

## set the env var for "new_env" environment
conda env config vars set -n new_env LD_PRELOAD='/home/alid/miniconda3/envs/new_env/lib/python3.9/site-packages/gmsh-git-Linux64-sdk/lib/libgmsh.so'

## test importing
conda run -n new_env python -c "import gmsh"

见the documentation on managing environment variables in Conda envs。

【讨论】:

亲爱的@merv,首先,非常感谢您花时间解决我的问题。我尝试了您的第一行代码,然后当我在终端中运行 jupyter notebook 时遇到以下错误:/home/alid/miniconda3/envs/new_env/bin/python: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.26' not found (required by /home/alid/miniconda3/envs/new_env/lib/ python3.9/site-packages/gmsh-git-Linux64-sdk/lib/libgmsh.so)`. @Ali_d 似乎是一个新问题,值得提出一个新问题

以上是关于如何解决python包的静态TLS块错误中无法分配内存的主要内容,如果未能解决你的问题,请参考以下文章

torch/lib/libgomp-d22c30c5.so.1:无法在静态 TLS 块中分配内存

OSError:/lib/aarch64-linux-gnu/libgomp.so.1:无法在静态 TLS 块中分配内存

使用pip安装包提示TLS证书错误解决办法

ImportError:/usr/lib/aarch64-linux-gnu/libgomp.so.1:无法在静态 TLS 块中分配内存

使用pip安装包提示TLS证书错误解决办法

使用pip安装包提示TLS证书错误解决办法