我试图让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
。在
我也有麻烦。在我的例子中,我是从
pyrtlsdr
的顶层目录执行test.py
。在如果查看实际加载DLL的rtlsdr/librtlsdr.py,可以看到:
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
文件夹中。 我没有时间进一步挖掘,但我怀疑这与WIN32LoadLibrary
API(或用于将DLL加载到进程空间的任何东西)的调用方式以及它的搜索规则有关。在rtl_test.exe
可以开箱即用,因为它正在寻找librtlsdr.dll
:阅读文档后-
您必须确保正确安装了依赖项。在你的例子中,它是一台windows机器。在
依赖关系
matplotlib对于打印数据也很有用。librtlsdr二进制文件(rtlsdr.dll在Windows中和librtlsdr.so在Linux中)应该在pyrtlsdr目录中,或者一个系统路径。请注意,这些二进制文件可能有附加的依赖关系。在
如果出现librtlsdr导入错误:
有关详细信息-https://github.com/roger-/pyrtlsdr#troubleshooting
相关问题 更多 >
编程相关推荐