windows上的pyrtlsdr不影响

2024-06-08 13:14:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让pyrtlsdr-0.2.9在windows 10计算机上使用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

我试着轻轻地编辑模块,并将其与脚本保存在同一个文件夹中,在这种情况下,会出现以下错误:

^{pr2}$

如何使此模块在windows上运行?librtlsdr与我的加密狗一起工作,但显然不是通过python。在


Tags: 模块inpy脚本windowslibpackagesline
2条回答

我也有麻烦。在我的例子中,我是从pyrtlsdr的顶层目录执行test.py。在

如果查看实际加载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()只查看系统路径:

^{pr2}$

所以除非它在系统路径上,否则它必须命名为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文件夹中。 我没有时间进一步挖掘,但我怀疑这与WIN32LoadLibraryAPI(或用于将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

阅读文档后-

https://github.com/roger-/pyrtlsdr

您必须确保正确安装了依赖项。在你的例子中,它是一台windows机器。在

依赖关系

  • Windows/Linux/OSX
  • Python 2.7.x/3.3+
  • 图书馆
  • 可选:NumPy(以更方便的形式包装示例)

matplotlib对于打印数据也很有用。librtlsdr二进制文件(rtlsdr.dll在Windows中和librtlsdr.so在Linux中)应该在pyrtlsdr目录中,或者一个系统路径。请注意,这些二进制文件可能有附加的依赖关系。在

如果出现librtlsdr导入错误:

  • Windows:确保所有librtlsdr DLL文件(librtlsdr.dll, libusb-1.0.dll)在您的系统路径中,或与此相同的文件夹中 自述文件。还要确保你有他们所有的依赖关系(例如。 libgcc_s_dw2-1.dll或可能是Visual Studio运行时文件)。如果 rtl公司_软件无线电.exe好的,那你应该没事了。还要注意你不能 将64位版本的Python与32位版本的librtlsdr混合使用,然后 反之亦然。在

有关详细信息-https://github.com/roger-/pyrtlsdr#troubleshooting

相关问题 更多 >