ffi_closure_alloc 和 LIBFFI_CLOSURE_7.0 的导入错误

use*_*894 5 python-3.x conda tensorflow

我正在尝试在虚拟环境中使用 conda 运行tensorflow。这些是我采取的步骤:

  1. 我使用conda create --name tf python=3.9创建了一个新的 conda 环境

  2. 我使用激活环境

    conda activate tf
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我确保安装了 cuda 和 cuDNN

    conda install -c conda-forge cudatoolkit=11.2.2 cudnn=8.1.0
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我配置了系统路径

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我自动化了它

    mkdir -p $CONDA_PREFIX/etc/conda/activate.d
    echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
    
    Run Code Online (Sandbox Code Playgroud)
  6. 我确保安装了tensorflow

    pip install tensorflow==2.11.*
    
    Run Code Online (Sandbox Code Playgroud)
  7. 然后我尝试验证安装

    python3 -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
Run Code Online (Sandbox Code Playgroud)

这是我遇到错误的地方:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/sbrent/research/Oman/venv/lib/python3.8/site-packages/tensorflow/__init__.py", line 37, in <module>
    from tensorflow.python.tools import module_util as _module_util
  File "/home/sbrent/research/Oman/venv/lib/python3.8/site-packages/tensorflow/python/__init__.py", line 24, in <module>
    import ctypes
  File "/usr/lib/python3.8/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ImportError: /usr/lib/python3.8/lib-dynload/_ctypes.cpython-38-x86_64-linux-gnu.so: undefined symbol: ffi_closure_alloc, version LIBFFI_CLOSURE_7.0
Run Code Online (Sandbox Code Playgroud)

老实说,我不知道如何解决这个问题,所以任何指导将不胜感激。

我在上面的声明中列出了我尝试过的内容

小智 1

步骤1:sudo nano setup.py

步骤2:转到以下功能:

    def build_extensions(self):
    self.srcdir = sysconfig.get_config_var('srcdir')
Run Code Online (Sandbox Code Playgroud)

步骤 3:添加以下行:

    self.srcdir = os.path.dirname(os.path.abspath(__file__))
Run Code Online (Sandbox Code Playgroud)

这对我们有用!