3

我克隆了 node git repo,但是 node 附带的“waf”构建工具似乎不适用于最新版本的 Python。

$ ./configure
Traceback (most recent call last):
  File "/Users/greim/nodestuff/node/tools/waf-light", line 157, in <module>
    import Scripting
  File "/Users/greim/nodestuff/node/tools/wafadmin/Scripting.py", line 146
    except Utils.WafError, e:
                         ^
SyntaxError: invalid syntax
$ which python
/Library/Frameworks/Python.framework/Versions/3.0/bin/python

如果我理解,逗号是一种过时的语法,在 Python 3 上不起作用,对吧?

我宁愿不安装旧版本的 Python 只是为了做到这一点。理想情况下,我希望能够构建和安装最新版本,而不是依赖其他人分发 .dmg 文件。

摇滚和坚硬的地方?建议?


[更新]好的,感谢所有帮助回答这个问题的人。希望其他人会在谷歌上找到这个。事实证明,我的系统上确实有 Python 2.x(它默认安装在 OS X 上),位于 /usr/bin 下。所以解决方案是更新我的路径(不是永久的,只是为了这个 bash 会话)。

$ export PATH=/usr/bin:$PATH
$ ./configure
$ make
$ make install

多田!节点安装在我的系统上。

4

2 回答 2

3

waf 项目页面

保持从 Python 2.3 到 3.1 的兼容性(和 Jython 2.5)

我认为它目前通过在解包时运行 2to3.py 来做到这一点,所以如果你首先使用 python2 运行,那么它可能是错误的。我认为的 waf1.6 分支是 python3 clean

阅读node.js 代码,节点人员扩展了 waf - 这不是您使用 waf 的方式。这个想法是将waf二进制文件放在源代码中 - 这将使用正确版本的python进行扩展

OSX 确实有 python 2,因此运行构建的一种方法可能是编辑根 makefile 并替换第一行

WAF=python tools/waf-light

经过

WAF=/usr/bin/python tools/waf-light
于 2010-09-30T12:45:00.593 回答
1

是的,逗号已过时:请参阅http://www.python.org/dev/peps/pep-3110/

不幸的是,没有太多的解决方案,如果你坚持使用 python3,你将不得不修改节点代码以使其工作。

于 2010-09-30T10:18:02.470 回答