在建设部网站呢李可以看出需要什么时候考试,设计作品图片,网站制作先做数据库还是前台,wordpress cu主题问题描述
其实仍然是很简单的编译问题#xff0c;但是又弄了一整个下午加几乎整个晚上#xff0c;进度缓慢#xff0c;又吸取了教训#xff0c;因而还是来记录一下。 在试图使用torcharrow进行推荐系统模拟的时候#xff0c;撰写的python程序报错#xff1a;ERROR: flag…问题描述
其实仍然是很简单的编译问题但是又弄了一整个下午加几乎整个晚上进度缓慢又吸取了教训因而还是来记录一下。 在试图使用torcharrow进行推荐系统模拟的时候撰写的python程序报错ERROR: flag flagfile was defined more than once。这是一个符号重复定义的问题似乎在python编程中非常常见。
总结一下问题解决的步骤 首先排查哪一句开始报错一般是import就会报这个error找到发现是自己写的一个pybind11的自用的共享库其中使用了gflags和brpc因而报错。
然后得分析原因其实已经讲的很清楚了符号重定义。所以无脑谷歌搜ai问都没卵用的。纯浪费时间还得先想想。
原因是pip install torcharrow时其实也他也打包了一个叫_torcharrow.xxx类似这个名字的pybind的共享库里面的lib中也能看到两个libgflags.so.xxx这样的文件因此如果同时import就重定义了符号造成编译失败。具体torcharrow的结构可以通过pip show torcharrow去对应文件夹查看。
之前我的libflags是静态库所以需要重新编译成动态库而且需要让torcharrow和我的共享库使用同一个libgflags.so如此动态链接时只需要加载一份.so所以不会冲突这就是动态库的好处。
然而这里一定注意两遍的libgflags的版本要一致torcharrow是2.2.2这个库好像都停止维护了应该一直都会是这个版本了所以就本机编译安装相同的版本。然后通过进入对应conda的site-package/torcharrow.libs/应该类似这样的文件夹将其中一个libgflags.so.xxx通过软链接ln -s 改成你本机编译的那个.so他似乎有好几个libgflags你可以先去site-package/torcharrow用ldd查看他的pybind生成的动态库需要的是哪个libgflags再去对应的地方软链接修改。
就大功告成了。
还是动脑太少人工智能时代仍然应该优先自己分析问题试图解决。不行的话再求助。编译的理解仍然需要加强。 近期诸事不顺眼睛花粉过敏鼻子鼻窦炎又急性过敏性鼻炎牙齿有一颗亟待根管还有两颗牙龈发炎只能先靠布洛芬维持生计下周才挂到口腔科的号。唉命途多舛的 3 3 3月啊大难不死必有后福现在先努力不死吧