在工作中,我的任务是将 Python 2.7 代码的大型库转换为 Python 3.x。
该库包含许多使用 boost python for C++ 制作的脚本和扩展。
所有这些都是用 SCons 构建的,它不能与 Python 3.x 解释器一起使用,但现在我和我的主管想知道是否有办法解决这个问题。
SConstruct 文件包含 sys.version 的表达式,以确定要导入的正确模块目录(numpy 等)。我不知道如何使用 SCons 或语法,因此我无法提供有关此主题的大量信息。
我们可以使用 SCons 来构建具有给定扩展的 Python 3 代码,还是必须等到 SCons 与 Python 3 兼容?
在撰写本文时,计划在单个分支/版本中支持 Python 2.7 和 3.x。此功能的工作已经开始,但需要更多时间才能实现这一目标。
所以看起来你最好的选择就是立即开始。 SCons 本身应该可以在 Python 2.7 下正常运行来编译 Boost 扩展。您的情况的问题是添加的检查和检测机制,用于从当前 Python 解释器的版本派生路径和模块名称。
由于您无法提供有关此过程的更多详细信息,因此我的回答有些含糊,抱歉。原则上,您必须在 SConstructs/SConscripts 中找到确定当前运行的 Python 解释器版本的位置。只需将其硬编码到您另外安装在计算机上的 3.x 版本,并祈祷其余部分将自动工作。
请注意这里“编译代码”之间是如何明显分开的forPython 版本” vs “编译代码underPython 版本”。
一般来说,更好地理解 SCons 的内部工作原理和基本原理可能会有所帮助。如果您有时间,请查看用户指南(http://scons.org/doc/product/HTML/scons-user.html)或咨询我们的用户邮件列表(参见http://scons.org/lists.php)用于更大的问题和讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)