Я клонировал репозиторий узла git, но инструмент сборки «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.

Рок и наковальня? Рекомендации?

[обновление] Хорошо, спасибо всем, кто помог ответить на этот вопрос. Надеюсь, другие найдут это в Google. Как оказалось, в моей системе есть Python 2.x (он устанавливается по умолчанию в OS X) в каталоге /usr/bin. Таким образом, решение состояло в том, чтобы обновить мой путь (не навсегда, только для этого сеанса bash).

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

Тада! Node установлен в моей системе.

Предоставлено: greim

Решение

Iстраница проекта waf говорит

Совместимость с Python 2.3 до 3.1 сохраняется (и Jython 2.5)

Я думаю, что в настоящее время он делает это, запуская 2to3.py при распаковке, поэтому, если вы сначала запустили python2, это может быть неправильно. Я думаю, что ветка waf1.6 чистая для python3.

Читая код node.js, люди, занимающиеся узлом, расширили waf — это не то, как вы должны использовать waf. Идея заключается в том, чтобы поместить бинарный файл waf в исходный код — это будет расширяться с использованием правильной версии python.

В OSX есть python 2, поэтому способ запуска сборки может состоять в том, чтобы отредактировать корневой файл makefile и заменить первую строку

WAF=python tools/waf-light

by

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

Решение предоставлено: Марк

Посмотреть дополнительное обсуждение.