python和swig版本兼容性问题
Posted
技术标签:
【中文标题】python和swig版本兼容性问题【英文标题】:Issue with python and swig version compatibility 【发布时间】:2019-10-13 04:21:58 【问题描述】:我以前使用 python 2.7.9 使用 swig(版本 2.0.12)包装一些 c++ 代码,并且一切运行良好。然后我切换到 python 3.7.3 并且像以前一样在运行 swig 时遇到了问题。
这是我在终端中的错误消息:
ImportError: /home/_add_array.so: undefined symbol: PyClass_Type
我可以想象两种可能的解决方案:
需要更改我为 swig 生成文件而使用的命令行命令。
我需要更新到较新版本的 swig。
如果是第一种情况,那我之前的命令不正确怎么办:
swig -c++ -python add_array.i
g++ -fpic -c add_array_wrap.cxx add_array.h add_array.cpp -I/usr/include/python2.7
g++ -shared add_array_wrap.o add_array.o -o _add_array.so
如果是情况2,什么版本的swig兼容python 3.7.3? 我正在运行 Ubuntu,以防万一。
谢谢!
【问题讨论】:
您说“我遇到了很多问题”,但您忘记提及问题是什么。 谢谢约翰,我已经添加了我的错误信息。 【参考方案1】:这部分肯定是错的:
-I/usr/include/python2.7
您需要更新它以指向新的 Python 3.7 安装。
【讨论】:
啊,菜鸟的错误。我假设我的 3.7 安装在相同的文件路径位置,但由于系统在工作,它位于完全不同的位置。我将第二行更改为: g++ -fpic -c add_array_wrap.cxx add_array.h add_array.cpp -I/home/myName/tools/anaconda3/pkgs/python-3.7.3-h0371630_0/include/python3.7m/ 现在swig 至少可以正确生成正确的文件。谢谢约翰!以上是关于python和swig版本兼容性问题的主要内容,如果未能解决你的问题,请参考以下文章
jenkins执行python脚本的方法,和python版本的兼容性问题