导入错误:无法加载共享库,请确保已安装librtmp

1 投票
1 回答
955 浏览
提问于 2025-04-18 18:53

我在使用Windows 8,想要使用python-librtmp这个库。我按照这个链接的步骤安装了librtmp:http://pythonhosted.org/python-librtmp/。在Windows Powershell中运行的两个pip安装命令都成功了。安装完成后,它说库文件在c:\python27\lib\site-packages这个路径下。

现在,我打开了一个Python的开发环境(IDLE),输入了import librtmp。结果出现了以下错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import librtmp
  File "C:\Python27\lib\site-packages\librtmp\__init__.py", line 14, in <module>
    from librtmp_ffi.binding import librtmp
  File "C:\Python27\lib\site-packages\librtmp_ffi\binding.py", line 13, in <module>
    raise ImportError("No shared library could be loaded, "
ImportError: No shared library could be loaded, make sure that librtmp is installed.

这是binding.py文件:

import librtmp_config

from .ffi import ffi
from .verifier import verifier

for path in librtmp_config.library_paths:
    try:
        librtmp = ffi.dlopen(path)
        break
    except OSError:
        pass
else:
    raise ImportError("No shared library could be loaded, "
                      "make sure that librtmp is installed.")

librtmp = verifier.load_library()

这是librtmp_config文件夹中的init.py文件:

"""Runtime configuration of python-librtmp.

   This module provides access to variables used by this library
   and makes it possible to customize some behaviour before :mod:`librtmp`
   is imported.

"""
__all__ = ["library_paths"]

#: This is a list of filenames that python-librtmp
#: will attempt to dynamically load `librtmp` from.
library_paths = ["librtmp.so", "librtmp.so.0", "librtmp.dll", "librtmp.so.1", "librtmp.dylib"]

我对Python还很陌生,这是我第一次在Windows上使用Python。当我安装librtmp时,它说安装成功。我完全按照上面链接的步骤操作的。我不明白,为什么它还会说make sure that librtmp is installed

这是不是路径问题或者安装问题?我在网上搜索了解决办法,但没有找到有效的。

我需要单独安装librtmp吗?经过一些阅读,我发现librtmp包含在rtmpdump中。我从Windows上下载了rtmpdump的压缩文件,但我不知道怎么安装。README文件上说要运行“make SYS=mingw”,但压缩文件夹里没有makefile!

不过,rtmpdump文件夹里有一个子文件夹。那个文件夹里有librtmp.dll。如果你看到上面,init.py提到它的库路径中有一个librtmp.dll。这是不是意味着我需要在init.py中引用这个.dll文件?但我不知道该怎么做。

你能帮帮我吗?

1 个回答

2

解决了!!!我把 librtmp.dll 这个文件从 rtmpdump 包里复制到了 C:\Python27\DLLs 文件夹里。通过查看 binding.py_init_.py 这两个文件的内容,我发现 Python 找不到这个 dll 文件。不过,我还是不明白为什么它能在 DLLs 文件夹里找到。这个我只是随便试了一下,结果就成功了!

如果有谁能解释一下这个逻辑,那就太好了!

撰写回答