Adi*_*zad 24 c++ python glibc anaconda tensorflow
当我尝试在 conda 环境中运行 Python 脚本时,出现以下导入错误
(squad) azada@scholar-fe00:~/Desktop/Toy-Problem-Team-2 $ python3 train.py
Traceback (most recent call last):
File "train.py", line 21, in <module>
from tensorboardX import SummaryWriter
File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/__init__.py", line 5, in <module>
from .torchvis import TorchVis
File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/torchvis.py", line 11, in <module>
from .writer import SummaryWriter
File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/writer.py", line 15, in <module>
from .event_file_writer import EventFileWriter
File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/event_file_writer.py", line 28, in <module>
from .proto import event_pb2
File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/proto/event_pb2.py", line 7, in <module>
from google.protobuf import descriptor as _descriptor
File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/google/protobuf/descriptor.py", line 47, in <module>
from google.protobuf.pyext import _message
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/google/protobuf/pyext/_message.cpython-36m-x86_64-linux-gnu.so)
Run Code Online (Sandbox Code Playgroud)
写入strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX命令有以下输出
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
Run Code Online (Sandbox Code Playgroud)
如您所见,所需的libgcc版本不存在。GLIBCXX但我无法理解为什么 python在目录中查找/usr?
在我的 anaconda 环境中运行相同的命令libstdc++.so.6显示文件中存在所需的版本。
我正在使用大学的计算集群,因此我没有管理员权限。
有没有什么办法可以让Python使用libstdc++我的conda环境而不是目录中的环境/usr?
nat*_*ang 63
我花了一天的时间来解决这个问题,在我的研究大学的计算集群上工作时遇到了同样的问题,其规格与您相同,我终于找到了正确的 Stack Overflow线程。不幸的是,上面的答案都不起作用,但我可以非常有信心地说,链接线程中的详细信息应该可以解决您的问题,即使错误回溯的来源不同。
总而言之,您需要将文件夹的路径添加到tolib中:anacondaLD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/path/to/conda/env/lib
Run Code Online (Sandbox Code Playgroud)
就我而言,我只是做了:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/anaconda3/lib
Run Code Online (Sandbox Code Playgroud)
...它就像一个魅力!
sco*_*tle 13
这也值得一试,因为它最终对我有用:
conda install -c conda-forge libstdcxx-ng
Run Code Online (Sandbox Code Playgroud)
说明:我在尝试执行以下操作时收到此错误import tensorflow as tf:
ImportError: /opt/conda/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
Run Code Online (Sandbox Code Playgroud)
我已经libgcc-ng安装了。还值得注意的是,我添加了 conda 库路径和附加到的系统库路径LD_LIBRARY_PATH,但这对我不起作用。所以,YMMV。
小智 2
通过降级到 libgcc==5.2.0 来解决
最初,尝试使用 pip 安装,但如果出现错误:Could not download andcompile the C core of igraph.. install it by conda