跳到正文
版本:3.1.0

与安装相关的常见故障

简介

如果你无法通过本页解决你的问题,请通过以下按钮提出问题:

提出问题

问与答

找不到DLL

  • : 当我导入(import)模块的时候,为什么会遇到以下错误?

    ImportError: DLL load failed while importing mpegCoder: The specified module could not be found.
  • : 这个问题似乎只会在以下条件皆满足的时候出现:

    • 你正在使用Windows;
    • 你正在使用手动安装的mpegCoder,而非pip安装的版本。

    该错误是由于缺少必要的依赖项导致的。主要出现在以下几种情况之一:

    • 你的Python版本和预编译的mpegCoder模块不匹配;
    • 所依赖的DLL文件既没有和mpegCoder.pyd放在同一文件夹,也没有出现在环境路径里(即名为PATH的环境变量)。
  • 修复: 下载依赖项并将其中包含的DLL文件解压到mpegCoder.pyd所在的目录下。

找不到.so

  • : 当我导入模块的时候,为什么会遇到以下错误?

    ImportError: lib*****.so.**: cannot open shared object file: No such file or directory
  • : 这个问题似乎只会在以下条件皆满足的时候出现:

    • 你正在使用Linux;
    • 你正在使用手动安装的mpegCoder,而非pip安装的版本。

    该错误是由于缺少必要的依赖项导致的。主要出现在以下几种情况之一:

    • 你的Python版本和预编译的mpegCoder模块不匹配,在这种情况下,显示所缺少的库名字将会形如libpython3.*.so.**
    • 所依赖的动态库文件没有被添加到你的环境变量$LD_LIBRARY_PATH里。
  • 修复: 下载依赖项并将其中包含的、所缺少的.so文件解压到一个在$LD_LIBRARY_PATH里的文件夹内。

找不到numpy.core.multiarray

  • : 当我导入模块的时候,为什么会遇到以下错误?

    ImportError: numpy.core.multiarray failed to import
  • : 你可能没有安装Numpy,或者你安装的Numpy版本和预编译的mpegCoder不匹配。如果是由版本不一致引起的问题,一般来说较小的版本差不会造成错误。可能你使用的Numpy与作者预编译时的Numpy版本差别太大了。可以参见预编译列表(Win)预编译列表(Linux)来找到对应最佳的Numpy版本。

  • 修复: 重装Numpy,或者自行编译mpegCoder

找不到GLibC 2.29

  • : 当我导入模块的时候,为什么会遇到以下错误?

    OSError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ******/libdrm.so.2)
  • : 你的GLibC版本没有达到要求(>=2.29)。要想确认是这个原因,可以运行

    ldd --version

    该问题往往在使用较早版本的Linux发行版系统时出现。目前所支持的操作系统列表可以参见这里

  • 修复: 推荐编译并安装GLibC >=2.31。但是,如果用户不想这样做,而是想要一个快速修复的补丁,那么可以按以下步骤照做。

    如果你使用的是pip安装的mpegCoder。你需要在mpegCoder的安装目录下,找到一个名为lib-fix的文件夹,然后运行以下命令

    ln -sf <path-of-mpegCoder>/lib-fix/libm-2.31.so /lib/x86_64-linux-gnu/libm.so.6

    这个文件(libm-2.31.so)也可以在Linux依赖项里找到。

找不到GLibC 2.28

  • : 当我导入模块的时候,为什么会遇到以下错误?

    OSError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by ******/mpegCoder/lib/librav1e.so.0)
  • : 你的GLibC版本没有达到要求(>=2.28)。要想确认是这个原因,可以运行

    ldd --version

    该问题往往在使用较早版本的Linux发行版系统时出现。目前所支持的操作系统列表可以参见这里

  • 修复: 就我们的经验而言,如果用户不升级到更加新版的OS、或者自行编译GlibC,则该问题无解。在下一个版本,我们会尝试从编译GlibC开始构建我们的工具链,这有可能有助于消除由GlibC引起的一系列关于mpegCoder的问题。

找不到libcrypyto

  • : 当我导入模块的时候,为什么会遇到以下错误?

    OSError: libcrypto.so.1.1: cannot open shared object file: No such file or directory
  • : 该问题是由打包本项目时、本人的疏忽引起的。该依赖项本来应该被打包到mpegCoder的依赖数据里、但实际没有考虑到。已知在使用一个没有安装conda的Ubuntu 22.04上,用户可能会遇到这一问题。

  • 修复: 要解决该问题,请升级到mpegCoder>=3.1.1、或安装一个conda环境。如果用户不希望这样做,也可以考虑回退到Debian 11Ubuntu 20.04这两种OS。

不正确的依赖项

  • : 我没有安装任何依赖项,我也没有使用从PyPI安装的版本。为什么我可以成功导入mpegCoder

  • : 你很可能之前安装过FFMpeg。换言之,FFMpeg库已经在你的环境里了。考虑到FFMpeg的API随着版本在不停变化,将本项目和一个不匹配的FFMpeg连用是危险的。请确保你使用的mpegCoder版本和你的FFMpeg版本一致。

  • 修复: 从PyPI安装mpegCoder,或者下载正确的依赖项,或者自行编译mpegCoder