nuradio-companion Traceback (most recent call last): File "/usr/local/bin/gnuradio-companion", line 73, in check_gnuradio_import from gnuradio import gr ImportError: cannot import name 'gr' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/bin/gnuradio-companion", line 99, in <module> check_gnuradio_import() File "/usr/local/bin/gnuradio-companion", line 75, in check_gnuradio_import die(err, GR_IMPORT_ERROR_MESSAGE) File "/usr/local/bin/gnuradio-companion", line 42, in die from gi.repository import Gtk File "/usr/lib/python2.7/dist-packages/gi/repository/__init__.py", line 25, in <module> from ..importer import DynamicImporter File "/usr/lib/python2.7/dist-packages/gi/importer.py", line 33, in <module> from .module import get_introspection_module File "/usr/lib/python2.7/dist-packages/gi/module.py", line 57, in <module> from .types import \ File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in <module> from . import _propertyhelper as propertyhelper File "/usr/lib/python2.7/dist-packages/gi/_propertyhelper.py", line 21, in <module> import traceback File "/usr/lib/python3.6/traceback.py", line 5, in <module> import linecache File "/usr/lib/python3.6/linecache.py", line 11, in <module> import tokenize File "/usr/lib/python3.6/tokenize.py", line 33, in <module> import re File "/usr/lib/python3.6/re.py", line 142, in <module> class RegexFlag(enum.IntFlag): AttributeError: module 'enum' has no attribute 'IntFlag' Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 62, in apport_excepthook if not enabled(): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 24, in enabled import re File "/usr/lib/python3.6/re.py", line 142, in <module> class RegexFlag(enum.IntFlag): AttributeError: module 'enum' has no attribute 'IntFlag' Original exception was: Traceback (most recent call last): File "/usr/local/bin/gnuradio-companion", line 73, in check_gnuradio_import from gnuradio import gr ImportError: cannot import name 'gr' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/bin/gnuradio-companion", line 99, in <module> check_gnuradio_import() File "/usr/local/bin/gnuradio-companion", line 75, in check_gnuradio_import die(err, GR_IMPORT_ERROR_MESSAGE) File "/usr/local/bin/gnuradio-companion", line 42, in die from gi.repository import Gtk File "/usr/lib/python2.7/dist-packages/gi/repository/__init__.py", line 25, in <module> from ..importer import DynamicImporter File "/usr/lib/python2.7/dist-packages/gi/importer.py", line 33, in <module> from .module import get_introspection_module File "/usr/lib/python2.7/dist-packages/gi/module.py", line 57, in <module> from .types import \ File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in <module> from . import _propertyhelper as propertyhelper File "/usr/lib/python2.7/dist-packages/gi/_propertyhelper.py", line 21, in <module> import traceback File "/usr/lib/python3.6/traceback.py", line 5, in <module> import linecache File "/usr/lib/python3.6/linecache.py", line 11, in <module> import tokenize File "/usr/lib/python3.6/tokenize.py", line 33, in <module> import re File "/usr/lib/python3.6/re.py", line 142, in <module> class RegexFlag(enum.IntFlag): AttributeError: module 'enum' has no attribute 'IntFlag' zsy@zsy-virtual-machine:~$ uhd_find_devices Traceback (most recent call last): File "/usr/lib/command-not-found", line 23, in <module> import gettext File "/usr/lib/python3.6/gettext.py", line 49, in <module> import locale, copy, io, os, re, struct, sys File "/usr/lib/python3.6/locale.py", line 16, in <module> import re File "/usr/lib/python3.6/re.py", line 142, in <module> class RegexFlag(enum.IntFlag): AttributeError: module 'enum' has no attribute 'IntFlag' Error in sys.excepthook: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 62, in apport_excepthook if not enabled(): File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 24, in enabled import re File "/usr/lib/python3.6/re.py", line 142, in <module> class RegexFlag(enum.IntFlag): AttributeError: module 'enum' has no attribute 'IntFlag' Original exception was: Traceback (most recent call last): File "/usr/lib/command-not-found", line 23, in <module> import gettext File "/usr/lib/python3.6/gettext.py", line 49, in <module> import locale, copy, io, os, re, struct, sys File "/usr/lib/python3.6/locale.py", line 16, in <module> import re File "/usr/lib/python3.6/re.py", line 142, in <module> class RegexFlag(enum.IntFlag): AttributeError: module 'enum' has no attribute 'IntFlag'
时间: 2025-07-31 13:04:24 浏览: 10
<think>我们正在解决gnuradio-companion启动时出现的ImportError和AttributeError问题。根据错误信息,可能涉及Python环境、GNURadio库版本或系统库问题。以下是分步解决方案:###问题分析1.**ImportError:Nomodulenamed'gr'**表明Python无法找到GNURadio核心模块,通常由以下原因导致:-GNURadio未正确安装-Python路径配置错误-多版本Python冲突2.**AttributeError:module'enum'hasnoattribute'IntFlag'**常见于Python环境冲突:-系统中存在多个`enum34`包(旧版Python的backport)-Python版本混用(如同时安装Python2/3)###解决方案####步骤1:验证GNURadio安装状态```bash#检查已安装的gnuradio包dpkg-l|grepgnuradio#若未列出,需重新安装sudoaptinstallgnuradio```####步骤2:修复Python环境冲突```bash#移除冲突的enum34包(Python3自带enum,无需enum34)sudopipuninstallenum34#或使用pip3sudopip3uninstallenum34```####步骤3:检查系统库链接(参考引用[1])若出现`GLIBCXX_3.4.22notfound`错误:```bash#查看当前libstdc++.so.6支持的GLIBCXX版本strings/usr/lib/x86_64-linux-gnu/libstdc++.so.6|grepGLIBCXX#若缺少GLIBCXX_3.4.22,需升级g++或libstdc++sudoaptinstalllibstdc++6```####步骤4:重建GNURadio缓存```bash#删除用户配置缓存rm-rf~/.gnuradio~/.cache/gnuradio#重新生成GRC配置gnuradio-companion--rebuild-prefs```####步骤5:验证修复```bash#测试导入gnuradio核心模块python3-c"fromgnuradioimportgr;print(gr.version())"#若无报错,则启动GRCgnuradio-companion```###高级修复(若上述无效)**场景1:通过Pyenv管理多Python版本**若使用pyenv,需确保系统默认Python版本与GNURadio兼容:```bash#查看当前Python版本pyenvversions#切换至系统Pythonpyenvglobalsystem```**场景2:手动添加GNURadio库路径**在Python脚本中添加路径:```pythonimportsyssys.path.append('/usr/lib/python3/dist-packages')#Ubuntu默认路径```>**注意**:若问题仍存在,考虑完全卸载后从源码编译安装(参考前文卸载指南)。§§相关问题§§1.如何彻底卸载并重新安装GNURadio?2.如何通过源码编译安装特定版本的GNURadio?3.如何修复Python环境中其他库的版本冲突问题?</think>## 解决 GNU Radio Companion 的 ImportError 和 AttributeError 问题
### 问题原因分析
1. **ImportError: No module named 'gr'**
- GNU Radio 核心库未正确加载
- Python 路径配置错误
- 安装不完整或损坏
2. **AttributeError: module 'enum' has no attribute 'IntFlag'**
- Python 环境中的 `enum34` 包与 Python 3.6+ 内置 `enum` 模块冲突
- 过时的依赖库导致兼容性问题
### 完整解决方案
#### 步骤 1:修复 enum 冲突 (解决 AttributeError)
```bash
# 移除冲突的 enum34 包
sudo pip uninstall -y enum34
# 检查是否完全移除
pip list | grep enum
# 应该只显示内置 enum 模块,无 enum34
```
#### 步骤 2:修复 Python 路径 (解决 ImportError)
```bash
# 添加 GNU Radio 库路径到环境变量
echo 'export PYTHONPATH=/usr/lib/python3/dist-packages:$PYTHONPATH' | sudo tee -a /etc/profile.d/gnuradio.sh
# 立即生效
source /etc/profile.d/gnuradio.sh
```
#### 步骤 3:验证库链接
```bash
# 检查 libstdc++ 版本 (引用 [1] 相关问题)
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
# 若缺少 GLIBCXX_3.4.22,更新库:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install libstdc++6
```
#### 步骤 4:重建 GRC 配置
```bash
# 清除用户缓存
rm -rf ~/.gnuradio ~/.cache/gnuradio
# 重建配置 (引用 [3] 原理)
gnuradio-companion --rebuild-prefs
```
#### 步骤 5:测试启动
```bash
# 直接运行 GRC
gnuradio-companion
# 或通过 Python 脚本测试 (引用 [2] 方法)
python -c "from gnuradio import gr; print(gr.version())"
```
### 高级修复方法
若上述步骤无效,尝试:
**1. 重装 GNU Radio 核心组件**
```bash
sudo apt reinstall gnuradio python3-gnuradio
```
**2. 创建虚拟环境**
```bash
python3 -m venv gr-env
source gr-env/bin/activate
pip install numpy pygccxml
sudo apt install gnuradio
```
**3. 检查模块加载路径**
```python
# 创建 test_import.py 文件
import sys
print(sys.path)
import gr
print(gr)
```
运行后检查输出路径是否包含 `/usr/lib/python3/dist-packages`
### 验证修复
成功修复的标志:
1. `gnuradio-companion` 正常启动无报错
2. 能导入 `gr` 模块:`python -c "from gnuradio import gr"`
3. 流程图生成功能正常 (引用 [2][3])
> **重要提示**:操作后重启终端使环境变量生效。若使用虚拟环境,每次启动 GRC 前需激活环境。
阅读全文
相关推荐



















