Lazylinker_c导入Theano报错求助:含编译错误及临时文件信息
我来帮你搞定这个Theano的链接器报错问题,这种情况我之前碰到过好多次了。先把你遇到的报错信息整理完整(看起来你提供的回溯内容有点截断,但核心问题已经很明确了):
Traceback (most recent call last): File "/home/ubuntu/my_project/venv/lib/python3.6/site-packages/theano/gof/lazylinker_c.py", line 75, in <module> raise ImportError() ImportError 在处理上述异常期间,又触发了另一个异常: Traceback (most recent call last): File "/home/ubuntu/my_project/venv/lib/python3.6/site-packages/theano/gof/lazylinker_c.py", line 92, in <module> raise ...
这种错误大多和Theano的C链接器编译失败、系统依赖缺失或者虚拟环境配置问题有关,下面给你几个靠谱的解决思路,按优先级来试:
优先尝试:强制用纯Python链接器绕开C编译问题
直接让Theano跳过C链接器的使用,改用纯Python实现,这是最快的临时解决办法。你可以在代码开头添加这两行:import theano theano.config.linker = 'py'或者更持久一点,在用户目录下创建
~/.theanorc配置文件,写入以下内容:[global] linker = py安装编译依赖,让Theano能正常编译C链接器
Theano的C链接器需要gcc、g++这类编译工具,还有Python的开发包。在Ubuntu系统上,执行下面的命令就能补全依赖:sudo apt-get update sudo apt-get install build-essential python3.6-dev安装完成后重启你的项目,Theano会自动重新编译需要的链接器文件。
更新/重新安装适配Python3.6的Theano版本
你用的Python3.6比较老,有些新版本Theano可能兼容性不好。试试卸载后重新安装一个对3.6支持稳定的版本:pip uninstall theano -y pip install theano==1.0.5注意要在激活你的虚拟环境
/home/ubuntu/my_project/venv之后执行这些命令。清理Theano的编译缓存,解决缓存损坏问题
Theano会把编译后的文件存在缓存目录里,有时候缓存文件损坏也会导致这种奇怪的导入错误。执行下面的命令删除缓存:rm -rf ~/.theano/然后重新运行你的代码,Theano会重新生成所有需要的编译文件。
这些办法应该能解决你的问题,先试第一个纯Python链接器的设置,见效最快。
内容的提问来源于stack exchange,提问作者Chuck Aguilar

