我正在尝试pyrtlsdr-0.2.9
使用python 3.6
. 首先,我pip
按照网站上的说明安装了它。然后,出于某种原因,当我尝试导入模块或运行示例脚本时,我收到以下错误消息:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import rtlsdr
File "C:\...\Programs\Python\Python36-32\lib\site-packages\rtlsdr\__init__.py", line 56, in <module>
from .librtlsdr import librtlsdr
File "C:\...\Programs\Python\Python36-32\lib\site-packages\rtlsdr\librtlsdr.py", line 50, in <module>
librtlsdr = load_librtlsdr()
File "C:\...\Programs\Python\Python36-32\lib\site-packages\rtlsdr\librtlsdr.py", line 45, in load_librtlsdr
raise ImportError('Error loading librtlsdr. Make sure librtlsdr '\
ImportError: Error loading librtlsdr. Make sure librtlsdr (and all of its dependencies) are in your path
我试图轻轻地编辑模块并将其保存在与我的脚本相同的文件夹中,在这种情况下,我收到此错误:
OSError: Error code -12 when opening SDR (device index = 0)
我怎样才能让这个模块在 Windows 上工作?librtlsdr
与我的加密狗一起使用,但显然不是通过python
.
我也遇到了麻烦。就我而言,我是test.py
从pyrtlsdr
.
如果您查看实际加载 DLL 的rtlsdr/librtlsdr.py,您可以看到:
driver_files += ['librtlsdr.so', 'rtlsdr/librtlsdr.so']
driver_files += ['rtlsdr.dll', 'librtlsdr.so']
driver_files += ['..//rtlsdr.dll', '..//librtlsdr.so']
driver_files += ['rtlsdr//rtlsdr.dll', 'rtlsdr//librtlsdr.so']
driver_files += [lambda : find_library('rtlsdr'), lambda : find_library('librtlsdr')]
find_library()只在系统 PATH 中查找:
def find_library(name):
if name in ('c', 'm'):
return find_msvcrt()
# See MSDN for the REAL search order.
for directory in os.environ['PATH'].split(os.pathsep):
fname = os.path.join(directory, name)
if os.path.isfile(fname):
return fname
if fname.lower().endswith(".dll"):
continue
fname = fname + ".dll"
if os.path.isfile(fname):
return fname
return None
因此,除非它在系统 PATH 上,否则它必须命名为rtlsdr.dll
. 因此,重命名后,我希望它可以与顶级目录中的 DLL 一起使用(由于条目driver_files += ['rtlsdr.dll', 'librtlsdr.so']
),但它没有。只有相对路径(如driver_files += ['rtlsdr//rtlsdr.dll', rtlsdr//librtlsdr.so']
)似乎有效。所以如果你想把它放在你正在执行的目录中,你必须将完全不合格的条目更改为driver_files += ['.//rtlsdr.dll', 'librtlsdr.so']
. 或者,也可以将 DLL 放在rtlsdr
文件夹中。我没有时间进一步挖掘,但我怀疑与 WIN32 LoadLibrary
API(或用于将 DLL 加载到进程空间的任何东西)的调用方式有关,它是搜索规则。
rtl_test.exe
开箱即用,因为它正在寻找librtlsdr.dll
:
dumpbin /dependents rtl_test.exe
Microsoft (R) COFF/PE Dumper Version 14.23.28106.4
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file rtl_test.exe
File Type: EXECUTABLE IMAGE
Image has the following dependencies:
KERNEL32.dll
msvcrt.dll
librtlsdr.dll
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句