我在让python导入_analog_swig gnuradio模块时遇到问题,以便在Windows 8.1 64位计算机上运行gnuradio代码。

一些背景:我正在运行Python 2.7.10(安装在C:\ Python27中),并从以下位置安装了最新的gnuradio二进制文件(v3.7.11.1 / v1.3 64位任何CPU):http://www.gcndevelopment.com/gnuradio/downloads.htm。我已经将gnuradio安装到C:\ Program Files \ GNURadio-3.7中。
我可以从GRC成功运行gnuradio随播广告并运行流程图(其调用为“ C:\ Program Files \ GNURadio-3.7 \ bin \ run_gr.bat” gnuradio-companion.py)。

我已经添加并验证了以下系统变量的设置:

Path: C:\Program Files\GNURadio-3.7\bin
PYTHONPATH: C:\Program Files\GNURadio-3.7\lib\site-packages
GRC_BLOCKS_PATH: C:\Program Files\GNURadio-3.7\share\gnuradio\grc\blocks


现在解决问题:如果我运行例如CMD和类型:

python C:\test\top_block.py


我返回了以下ImportError:

File "C:\test\top_block.py", line 22, in <module>
from gnuradio import analog
File "C:\Program Files\GNURadio-3.7\lib\site-packages\gnuradio\analog\__init__.py", line 33, in <module>
from analog_swig import *
File "C:\Program Files\GNURadio-3.7\lib\site-packages\gnuradio\analog\analog_swig.py", line 17, in <module>
_analog_swig = swig_import_helper()
File "C:\Program Files\GNURadio-3.7\lib\site-packages\gnuradio\analog\analog_swig.py", line 16, in swig_import_helper
return importlib.import_module('_analog_swig')
File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named _analog_swig


C:\ Program Files \ GNURadio-3.7 \ lib \ site-packages \ gnuradio \ analog的文件夹内容如下:python - ImportError:没有名为_analog_swig的模块-LMLPHP

将此与Linux机器上的文件夹内容进行比较,该机器上有gnuradio的有效安装版本,可根据需要与python一起使用:

python - ImportError:没有名为_analog_swig的模块-LMLPHP

区别似乎是Windows中的文件夹仅包含_analog_swig.pyc文件,而Linux中的文件夹包含_analog_swig_.so文件。

知道为什么_analog_swig模块显然不能在Windows中导入吗?

我的计划是能够直接从我的python解释器运行gnuradio代码,并能够创建已编译的gnuradio可执行文件,因此,对此方法的任何帮助都将受到赞赏。

最佳答案

在过去的几天里,我一直在为此苦苦挣扎,但是我终于弄明白了。我试图在IDLE和PyCharm中运行GnuRadio Companion生成的代码。我一直因同样的错误而惨败。我终于想通了:

-正如Flexo所说,PYD文件(_analog_swig.pyd)实际上是Windows DLL。该错误使人听起来好像Python没有找到该文件,但这根本不是正在发生的事情。作为DLL的PYD文件本身具有依赖项。 Python能够很好地找到_analog_swig.pyd,但找不到该库的依赖项。

-要验证安装是否有问题,请下载并使用DependencyWalker(在Google上查看),以检查您的系统是否可以找到_analog_swig.pyd的依赖项。

-对我来说,解决方法是将GnuRadio-3.7 / bin文件夹添加到我的PATH环境变量中。在该文件夹中,有_analog_swig.pyd库需要加载的许多DLL。如果您的PATH中没有该文件夹,则该模块将无法在Python中加载,并引发您在上面看到的错误。

-我看到您已验证此文件夹在您的PATH中,因此尽管您的症状与我的症状完全相同,但这显然不是相同的问题。也就是说,当您以“ run_gr.bat”开头时,GRC代码可以很好地运行,但是当您从正常的CMD窗口中运行时,GRC代码则不会运行。

希望这对希望在Windows上使用GNURadio Python代码的其他人有所帮助。

关于python - ImportError:没有名为_analog_swig的模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49095278/

10-12 21:55