无法在OS X(雪豹)上为node.js配置make install

3 投票
2 回答
4277 浏览
提问于 2025-04-16 04:44

我克隆了 Node 的 Git 仓库,但随 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

好了!Node 已经在我的系统上安装好了。

2 个回答

1

是的,逗号这个用法已经过时了:可以查看一下 http://www.python.org/dev/peps/pep-3110/

不幸的是,如果你坚持使用python3,就没有太多解决办法,你需要修改节点代码才能让它正常工作。

3

我在waf项目页面上看到说:

它支持从Python 2.3到3.1的兼容性(还有Jython 2.5)

我觉得它现在是通过在解压时运行2to3.py来实现这个兼容的,所以如果你先用python2运行过,可能会出错。我认为waf1.6这个版本是针对python3做了清理的。

在阅读node.js的代码时,发现node团队扩展了waf——这并不是使用waf的正确方式。正确的做法是把waf的可执行文件放在源代码中,这样它会使用正确版本的python来扩展。

OSX系统确实有python 2,所以运行构建的一个方法可能是编辑根目录下的makefile,替换第一行:

WAF=python tools/waf-light

为:

WAF=/usr/bin/python tools/waf-light

撰写回答