我使用SWIG和Python 2.7 64位生成了一个Python模块。
使用此Python版本可以成功导入(即使用)此Python模块,但是当尝试使用不同的Python版本导入模块时,让我们说3.5 64位,它会失败。
反之,当我使用SWIG和Python 3.5 64位生成相同的Python模块时,可以使用此版本成功导入(即使用),但不能使用Python 2.7 64位。
SWIG似乎只为那一代使用的Python版本生成了一个Python模块。这个结论是否正确?如果是的话,采取什么措施来告诉" SWIG生成一个与Python版本无关的Python模块?
答案 0 :(得分:1)
SWIG最终会生成一个Python扩展,它本质上与Python的单个版本(和配置)相关联。
SWIG本身只负责生成代码,而不是构建代码。它生成用于实现Python扩展的C代码,以及围绕它的Python包装器。 SWIG生成的这两个输出都应该与版本无关。
但是当您实际编译代码时,您必须将其指向特定版本Python的包含路径。
如果您使用setuptools来构建所有内容,那么这个多步骤过程对您来说是隐藏的,因为运行脚本的Python版本的包含路径会自动使用。