ImportError:无法加载共享库,请确保已安装librtmp

时间:2014-08-28 18:45:41

标签: python windows rtmp

我正在使用Windows 8,并尝试使用python-librtmp。我已按照以下步骤从此处安装librtmp:http://pythonhosted.org/python-librtmp/。对我来说,在Windows Powershell中运行时,两个pip安装行成功运行。安装后,它表示库位于c:\python27\lib\site-packages

现在,我打开了一个Python IDE(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 zip文件。但我不知道如何安装它。 README说,运行&#34; make SYS = mingw&#34;,但zip文件夹没有makefile!

但是rtmpdump文件夹中有一个子文件夹。该文件夹包含librtmp.dll。如果您在上面看到, init .py在其库路径中提到了一个librtmp.dll。这是否意味着,我必须在 init .py中引用此.dll。但我不知道该怎么做。

你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

解决!!!我将rtmpdump包中的librtmp.dll文件复制到C:\Python27\DLLs。 根据我想到的binding.py_init_.py文件内容,python无法找到dll文件。但是,我仍然不知道为什么它可以在DLLs文件夹中找到该文件。我只是随机尝试了,它有效!

如果你们中的任何一个人都能解释这个逻辑那就太棒了!