如何在Python3环境中执行Scons?

17

我需要在scons脚本中导入Python3脚本。(我使用的是scons v3.0.1.7)

有没有一种方法可以使用Python 3执行scons?

官方的scons网站说:

这将是第一个支持早于2.7以及3.5+版本Python的版本发布。

类似 scons -python /usr/bin/python3 这样的命令会选择Python解释器,非常好用。

我没有找到如何为Python3构建scons版本的方法。


1
相关链接:https://stackoverflow.com/questions/44096321/compile-scons-in-python3 和 https://stackoverflow.com/questions/32135869/managing-python-3-code-with-scons - dirkbaechle
3.0.1.7 不是官方的 SCons 版本,3.0.1 才是,所以这是你发行版的打包。 - bdbaddog
4个回答

15
在最新版本中,SCons 支持 Python2 和 Python3。无需重新编译 SCons 本身或其他。重要的是您系统上的默认 Python 版本是哪个。
您没有提到正在尝试使其工作的操作系统,因此我现在假定为 Linux。安装后,您可以在类似 /usr/local/bin/scons 的位置找到 scons 脚本(如果不确定,请尝试使用 "which scons" 命令)。第一行。
#! /usr/bin/env python
告诉您的系统使用默认的Python版本。如果这不是您想要的,您可以将其更改为例如。
#! /usr/bin/env python3

如果您的系统默认使用Python2,但想要改用Python3来运行SCons


我使用的是macOS。谢谢,它很好用!我按照您建议的方式编辑了scons可执行文件。但也许更安全的做法是从原始文件创建一个“scons3”,然后再进行更改。我使用homebrew来管理软件包,它在下一次更新时肯定会覆盖它。 - Chouettou
Python2的支持已经被放弃。 - Andreas

14

以下是更好的解决方案,在您的.bash_profile文件中添加以下内容:

alias scons3="/usr/bin/env python3 $(which scons)" 

当您想要强制Python 2.x运行新的需要Python 3的scons时,这也非常有用。(是的,我知道Python 2已经停止支持了;在这里一次只尝试解决一个问题) - Roger Lipscombe

3
假设您已经安装了Python 3虚拟环境:
virtualenv-3.6 venv3
venv3/bin/pip install -U setuptools wheel pip
venv3/bin/pip install scons
venv3/bin/scons

这允许您的安装不受Homebrew更新的影响。


3

我必须编辑 /usr/bin/scons 并更改 shebang 为

#! /usr/bin/python

to

#! /usr/bin/env python

确保您处于Python3虚拟环境中


/usr/bin/scons 已经是 #! /usr/bin/env python。 - Anton Tropashko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接