无法在OS X(雪豹)上为node.js配置make install
我克隆了 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