Python 编程 · 2012/10/17 0

Python 安装 V8 引擎 – pyv8

简介

V8是谷歌开源的JavaScript引擎, 使用C++开发,并在谷歌浏览器中使用. 它可以独立运行, 也可以嵌入到任何C++应用程序中.pyv8 是 Python 的对 v8 引擎一个封装.

安装
1. 安装 scons, python 的devel, boost 以及 boost for python 的 devel

Ubuntu:

sudo apt-get install scons libboost-dev libboost-thread-dev \
libboost-system-dev \
python-dev libboost-python-dev 

Centos:

yum install scons python-devel boost-devel boost-python -y

2. 签出 v8 和 pyv8

svn checkout http://v8.googlecode.com/svn/trunk/ v8
svn checkout http://pyv8.googlecode.com/svn/trunk/ pyv8

3. 安装 PyV8
设置 V8_HOME 环境变量为你签出v8代码的目录, 是编译 PyV8的关键步骤. 这将允许PyV8增补(patch)V8将其编译成静态库,而不是默认的动态库.一旦你设置了这个你就可以使用标准的Python setup.py 命令来编译和安装PyV8了.

cd v8
export PyV8=`pwd`
export V8_HOME=`pwd`
cd ../pyv8
python setup.py build
sudo python setup.py install

如果上述编译过程出错, 尝试一下操作
删除 pyv8 和 v8 目录, 执行

svn checkout -r 508 http://pyv8.googlecode.com/svn/trunk/ pyv8

修改 pyv8 目录下的文件 setup.py 文件, 将

V8_SVN_REVISION = None

改为

V8_SVN_REVISION = 14004

再执行

python setup.py build
sudo python setup.py install

也许就可以通过了

测试 PyV8 的安装
新增以下 Python 脚本:

import PyV8

ctxt = PyV8.JSContext()
ctxt.enter()
func = ctxt.eval("""
    (function(){
        function hello(){
            return "Hello world.";
        }
        return hello();
    })
""")
print func()

执行脚本,如果能看到输出 Hello world. 那么恭喜你, 你的 Python 就可以执行 JS 了.