Mac OS - не удалось установить python-spidermonkey, потому что nspr не найден
Попытка установить python-spidermonkey с помощью pip на моей Mac OS не удалась, потому что отсутствует nspr:
$ pip install python-spidermonkey
Downloading/unpacking python-spidermonkey
Running setup.py egg_info for package python-spidermonkey
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/Users/smin/ENV/build/python-spidermonkey/setup.py", line 186, in <module>
**platform_config()
File "/Users/smin/ENV/build/python-spidermonkey/setup.py", line 143, in platform_config
return nspr_config(config=config)
File "/Users/smin/ENV/build/python-spidermonkey/setup.py", line 87, in nspr_config
return pkg_config("nspr", config)
File "/Users/smin/ENV/build/python-spidermonkey/setup.py", line 59, in pkg_config
raise RuntimeError("No package configuration found for: %s" % pkg_name)
RuntimeError: No package configuration found for: nspr
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/Users/shengjiemin/work/Ceilo-ENV/build/python-spidermonkey/setup.py", line 186, in <module>
**platform_config()
File "/Users/smin/rmonkey/setup.py", line 143, in platform_config
return nspr_config(config=config)
File "/Users/smin/ENV/build/python-spidermonkey/setup.py", line 87, in nspr_config
return pkg_config("nspr", config)
File "/Users/smin/ENV/build/python-spidermonkey/setup.py", line 59, in pkg_config
raise RuntimeError("No package configuration found for: %s" % pkg_name)
RuntimeError: No package configuration found for: nspr
----------------------------------------
Command python setup.py egg_info failed with error code 1 in /Users/smin/ENV/build/python-spidermonkey
Затем я попытался установить nspr:
sudo port install nspr
но это не имело никакого значения, все та же ошибка. Есть идеи?
3 ответа
Наконец-то я все исправил, следуя этой теме:
http://davisp.lighthouseapp.com/projects/26898/tickets/38-trouble-installing-on-mac-os-x-107
Два шага:
1. Переместите файлы из папки Darwin-XXX внутри spidermonkey в spider monkey/libjs, чтобы устранить эту ошибку.
cd /home/smin/virt-ENV/build/python-spidermonkey/spidermonkey
mv Darwin-i386/* libjs/
2.Внесите изменения в файл ниже: libjs/jsutil
от:
typedef int js_static_assert_line##line[(condition) ? 1 : -1]
чтобы:
typedef int js_static_assert_line##line[(condition) ? 1 : 0]
Сначала установите nspr и установите системные переменные:
$ brew install pkg-config
$ brew install nspr
$ export ARCHFLAGS="-arch x86_64"
$ export PKG_CONFIG_PATH=/path/to/pkgconfig ## e.g. /usr/local/lib/pkgconfig
Теперь получите последнюю версию кода:
$ git clone git://github.com/davisp/python-spidermonkey.git
Теперь запустите обновление js libs и удалите tmp dir:
$ update-libjs.sh
$ rm -r /path/to/tmp/in/spidermonkey/dir ## e.g. ./tmp
Файл libjs/jsutil.h заменяет строку 76 из
typedef int js_static_assert_line_##line[(condition) ? 1 : -1]
в
typedef int js_static_assert_line_##line[(condition) ? 1 : 0]
В файле libjs/jsprf.c строка комментария 644
//VARARGS_ASSIGN(nas[cn].ap, ap);
Теперь установите библиотеку
$ python setup.py build
$ python setup.py test
$ python setup.py install
Я нашел обходной путь (третья строка ниже) для установки на MacOS 10.9.
$ brew install pkg-config
$ brew install nspr
$ cd /usr/local/lib/pkgconfig/ # IMPORTANT
$ ln -s nspr.pc ../../Cellar/nspr/4.10.8_1/lib/pkgconfig/nspr.pc
$ git clone git://github.com/davisp/python-spidermonkey.git
$ cd python-spidermonkey
$ cp spidermonkey/Linux-x86_64/* spidermonkey/libjs/
$ python setup.py build
$ python setup.py test # test failed, but it's okay to ignore
$ sudo python setup.py install
Это прекрасно работает с моим кодом Python, который использует модуль spidermonkey, как показано ниже. Надеюсь это поможет.
rt = spidermonkey.Runtime()
cx = rt.new_context()
cx.execute(js)
cx.execute("...")