【问题标题】:Managing Python 3 code with SCons使用 SCons 管理 Python 3 代码
【发布时间】:2015-08-21 08:36:10
【问题描述】:

在工作中,我的任务是将带有 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 兼容?

【问题讨论】:

  • 您是否需要将这些扩展链接到 SCons 以进行构建?如果不是,那么 SCons 用什么语言编写都没有关系......

标签: python python-2.7 python-3.x boost-python scons


【解决方案1】:

在撰写本文时,我们计划在单个分支/版本中同时支持 Python 2.7 和 3.x。此功能的工作已经开始,但要达到此目标还需要一些时间。

所以看起来你最好的选择是立即开始。 SCons 本身应该在 Python 2.7 下运行良好,用于编译 Boost 扩展。您的问题是添加了从当前 Python 解释器版本派生路径和模块名称的检查和检测机制。 由于您无法提供有关此过程的更多详细信息,因此我的回答在这里有些含糊,抱歉。原则上,您必须在 SConstructs/SConscripts 中找到确定当前运行的 Python 解释器版本的位置。只需将其硬编码为您在机器上另外安装的 3.x 版本,并保持手指交叉,其余的将自动运行。

请注意这里“为 Python 版本编译代码 与“在 Python 版本下编译代码 ”之间有明显的区别。

一般来说,更好地了解 SCons 的内部工作原理和基本原则可能会有所帮助。如果您有时间,请查看用户指南 (http://scons.org/doc/production/HTML/scons-user.html) 或查阅我们的用户邮件列表 (请参阅 http://scons.org/lists.php) 了解更多问题和讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    相关资源
    最近更新 更多