Ubuntu环境Ruby2.5中activesupport与i18n冲突致脚本运行失败求助
解决Ruby 2.5下activesupport与i18n的依赖冲突问题
我之前在Ubuntu环境用Ruby 2.5跑脚本时,也遇到过一模一样的activesupport和i18n依赖冲突问题——旧Ruby版本搭配新gem时,这种版本不兼容的情况特别常见,给你几个实用的解决思路:
1. 锁定i18n的兼容版本
Ruby 2.5对i18n的版本有严格限制,过高的i18n版本(比如1.10+)会和适配Ruby2.5的activesupport 5.x系列产生冲突。你可以直接指定安装兼容的i18n版本:
gem install i18n -v 1.9.1
如果是用Gemfile管理依赖,就在文件里添加:
gem 'i18n', '~> 1.9.0' gem 'activesupport', '~> 5.2.0'
然后执行:
bundle install
2. 清理全局gem并重新安装
有时候全局gem的版本混乱会导致隐性冲突,你可以先卸载冲突的gem,再重新安装指定版本:
gem uninstall activesupport i18n gem install activesupport -v 5.2.8.1 gem install i18n -v 1.9.1
3. (备选)升级Ruby版本
如果你的脚本没有强制要求Ruby2.5,升级到Ruby2.7及以上版本可以从根本上解决这个依赖冲突问题——更高版本的Ruby对新的activesupport和i18n版本兼容性更好。用rbenv升级的命令如下:
rbenv install 2.7.8 rbenv global 2.7.8
另外注意到你的错误栈是从thread.py启动的,看起来是Ruby脚本被Python调用?不过不管调用方式如何,只要确保Ruby环境的gem版本兼容,就能解决这个报错。
内容的提问来源于stack exchange,提问作者Ulysses
相关产品推荐
相关产品推荐

