Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ImportError:没有名为模拟开关的模块_Python_Windows_Swig_Importerror_Gnuradio - Fatal编程技术网

Python ImportError:没有名为模拟开关的模块

Python ImportError:没有名为模拟开关的模块,python,windows,swig,importerror,gnuradio,Python,Windows,Swig,Importerror,Gnuradio,为了在Windows 8.1 64位机器上运行gnuradio代码,我在让python导入_模拟_swigGnuradio模块时遇到问题 一些背景:我正在运行Python2.7.10(安装在C:\Python27中),并已从以下位置安装了最新的gnuradio二进制文件(v3.7.11.1/v1.3 64位任意CPU):。我已将gnuradio安装到C:\Program Files\gnuradio-3.7。 我可以成功运行gnuradio companion并从GRC运行流程图(它调用“C:\

为了在Windows 8.1 64位机器上运行gnuradio代码,我在让python导入_模拟_swigGnuradio模块时遇到问题

一些背景:我正在运行Python2.7.10(安装在C:\Python27中),并已从以下位置安装了最新的gnuradio二进制文件(v3.7.11.1/v1.3 64位任意CPU):。我已将gnuradio安装到C:\Program Files\gnuradio-3.7。 我可以成功运行gnuradio companion并从GRC运行流程图(它调用“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 
我收到了以下邮件:

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:\test\top\u block.py”,第22行,在
从gnuradio导入模拟
文件“C:\Program Files\GNURadio-3.7\lib\site packages\GNURadio\analog\\uuuuu init\uuuuu.py”,第33行,在
从模拟开关输入*
文件“C:\Program Files\GNURadio-3.7\lib\site packages\GNURadio\analog\analog\analog\u swig.py”,第17行,在
_模拟\u swig=swig\u导入\u帮助器()
文件“C:\Program Files\GNURadio-3.7\lib\site packages\GNURadio\analog\analog\U swig.py”,第16行,在swig\u import\u helper中
返回导入lib.import\u模块(“模拟开关”)
文件“C:\Python27\lib\importlib\\uuuu init\uuuuu.py”,第37行,在导入模块中
__导入(名称)
ImportError:没有名为模拟开关的模块
C:\Program Files\GNURadio-3.7\lib\site packages\GNURadio\analog的文件夹内容如下:

将其与linux机器上的文件夹内容进行比较,linux机器上安装了gnuradio,可根据需要与python一起工作:

区别似乎在于windows中的文件夹只包含一个_模拟_swig.pyc文件,而linux中的文件夹包含一个_模拟_swig.so文件

你知道为什么模拟开关模块不能在windows中导入吗


我的计划是能够直接从python解释器运行gnuradio代码,并能够创建编译后的gnuradio可执行文件,因此非常感谢您对如何解决这一问题的任何帮助。

过去几天,我一直在努力解决这一问题,但我终于找到了答案。我试着用IDLE和PyCharm运行gnuradiocompanion生成的代码。由于同样的错误,我一直惨败。我终于明白了:

-正如Flexo所说,PYD文件(_analog_swig.PYD)实际上是一个Windows DLL。这个错误听起来像是Python没有找到那个文件,但事实并非如此。PYD文件是一个DLL,它本身具有依赖性。Python可以很好地找到_analog_swig.pyd,但它无法找到该库的依赖项

-要验证您的安装中是否存在错误,请下载并使用DependencyWalker(谷歌it)检查您的系统是否可以找到与_模拟_swig.pyd的依赖关系

-我的修复方法是将GnuRadio-3.7/bin文件夹添加到我的PATH环境变量中。在该文件夹中有许多DLL,模拟swig.pyd库需要加载这些DLL。如果路径中没有该文件夹,则模块将无法在Python中加载,并抛出上面看到的错误

-我看到您已验证此文件夹位于您的路径中,因此这显然不是同一个问题,尽管您的症状与我的症状完全相同。i、 e.当您以“run_gr.bat”开头时,GRC代码将正常运行,但当您从普通CMD窗口运行时,GRC代码不会正常运行

希望这能帮助其他希望在Windows上使用GNURadio Python代码的人

朋友

正如您提到的,GNU Companion调用
\bin\run\u gr.bat gnuradio Companion.py
。该批处理脚本在windows环境变量上做了大量工作(如果您感兴趣,请尝试在文本编辑器中打开它)

从某种意义上说,
run\u gr.bat
脚本为gnuradio构建了一个临时的自定义python工作区,以便它可以导入任何需要的内容。它接收在这个环境中作为命令行参数运行的python脚本;因此,您可以使用它在windows命令提示符中运行您想要的任何GNU radio python代码。一般来说,你会打电话

<gnuradio_install_path>\bin\run_gr.bat <gnu_radio_code>.py
test.py
目录中,尝试从命令提示符调用以下命令:

<gnuradio_install_path>\bin\run_gr.bat test.py
\bin\run\u gr.bat test.py

在windows中,.pyd文件实际上只是一个DLL,它的作用与.so文件相同。最有可能的是,它不是为您的Windows设备上正确的Python版本/编译器/字大小而构建的,其中IIRC错误消息在所有情况下都几乎相同。感谢您的回答@jg1998。。它实际上帮助解决了windows环境中“runtime_swig”模块的类似问题。
<gnuradio_install_path>\bin\run_gr.bat test.py