Я клонировал репозиторий узла 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
Решение предоставлено: Марк