安装tia包后出现ModuleNotFoundError及语法错误的技术求助
看起来你踩了tia包的Python版本兼容坑啦!这两个错误其实都是同一个根源导致的,我来给你拆解清楚并解决:
问题根源
通过pip install tia安装的官方包是仅支持Python 2.x的旧版本,而你使用的是Python 3.6,这就引发了两类兼容性问题:
- 第一个
ModuleNotFoundError:旧版本tia的模块结构不符合Python3的导入规则,导致tia.analysis.model模块无法被正确识别 - 第二个
SyntaxError:代码中使用了Python2的无括号print语句,这在Python3里属于语法错误
解决办法
优先方案:安装Python3兼容的社区维护版本
官方tia项目已经多年未更新,社区有开发者维护了适配Python3的分支,直接从GitHub安装这个版本就能一次性解决所有问题:
# 先卸载旧的不兼容版本 pip uninstall tia -y # 安装Python3兼容的fork版本 pip install git+https://github.com/kimtth/tia.git
这个分支已经修复了Python3的语法问题(给所有print语句添加了括号),同时调整了模块结构,导入问题也会随之消失。
临时应急方案:手动修改本地代码(不推荐)
如果无法从GitHub安装,你可以手动修改已安装的tia包代码临时解决问题:
- 修复
print语法错误:找到报错的/home/jholmes/anaconda3/lib/python3.6/site-packages/tia/bbg/v3api.py文件,将第186行的print 'unhandled event: %s' % evt.EventType修改为print('unhandled event: %s' % evt.EventType) - 修复模块导入问题:检查
tia/analysis/__init__.py中的导入语句,若model模块缺失,需要从tia的GitHub源码中复制对应模块文件到你的site-packages目录
不过这种方法需要逐个修复bug,后续大概率还会遇到其他兼容性问题,因此优先推荐第一个方案。
备选方案:降级到Python2.7(不推荐)
如果你的项目允许使用Python2,可以创建Python2.7的虚拟环境来适配旧版本tia:
# 用conda创建Python2.7环境 conda create -n py27_env python=2.7 conda activate py27_env # 在该环境中安装tia pip install tia
但Python2早已停止维护,不建议长期使用这个方案。
内容的提问来源于stack exchange,提问作者MikiBelavista
相关产品推荐
相关产品推荐

