Ubuntu下安装PyV8


Posted in Python onMarch 13, 2016

这几天需要在使用PyV8来进行python与javascript的交互。之前在window下安装过,直接使用的exe安装的,也没有遇到什么问题。
结果这次在Ubuntu安装遇到了不少坑--主要是网上的办法都不可行,不知道为啥。最终折腾了一晚上,终于好了。

安装依赖

首先安装依赖:Boost, 这一步网上的大部分教程都差不多,也是必须的;

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

安装PyV8

网上的大部分教程均是使用svncheckout出V8,PyV8的代码,然后再设置什么V8的目录为V8_HOME最后在编译PyV8;先不说能不能使用svn迁出,(反正我翻墙都没有迁出来),后来去google.code网站上, 下载了源代码,结果编译期间出各种错误,根本没办法执行。

还有一些直接使用pip安装的教程,也是报各种错,缺少这个啦,缺少那个啦。
于是就想直接找到二进制文件,直接拷到python的包目录得了。结果这条路还算顺畅!最终比较轻松的安装成功了。
二进制文件googlecode官网有,有人在github上也提供了很全面的二进制安装文件https://github.com/emmetio/pyv8-binaries 找到适合你机器的版本下载.

解压出来应该有如下两个文件:一个源码,一个二进制文件。一般Python的第三方包有这俩文件就够了,

PyV8.py

_PyV8.so
然后把这两个文件拷到你的python第三方包的目录里面就好,比如我的是:

cd pyv8 //进入解压后的目录
sudo cp * /usr/lib/python2.7/dist-packages/

之后尝试导入import PyV8结果报以下的一个错误:

ImportError: libboost_python_py27.so.1.54.0: cannot open shared object file: No such file or directory
当时看到这个错误,然后想到我之前已经安装好了依赖呢,为啥还会报这个错误呢。
大致查了一下,有的说是链接库路径设置问题,之后检查了一下libboost_python_py27.so.1.54.0

shomy@LiuPC:blog$ find /usr/lib/ -name libboost_python-py27.so.1.54.0
/usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.54.0

果然有这个链接库,那为啥检测不到呢,问题就出在环境变量LD_LIBRARY_PATH上,因为python寻找链接库的时候,是从该路径里面找的。

然而我echo $LD_LIBRARY_PATH却啥都没有,只要把上面的路径加入到环境变量就可以吧。--于是在.bashrc最后加入了一行:(路径可能不一致,请根据自己的实际情况添加)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu
保存退出之后,再用source ~/.bashrc 重载一下就好了。再一次import PyV8 正常!

执行下面的测试代码:

import PyV8

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

执行输出Hello World 就说明安装成功了。可以去模拟登录了~~~

Python 相关文章推荐
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 Python
Python获取指定字符前面的所有字符方法
May 02 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
Python values()与itervalues()的用法详解
Nov 27 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 #Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 #Python
编写Python小程序来统计测试脚本的关键字
Mar 12 #Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 #Python
Python语言的面相对象编程方式初步学习
Mar 12 #Python
举例讲解Python中的list列表数据结构用法
Mar 12 #Python
Python中的if、else、elif语句用法简明讲解
Mar 11 #Python
You might like
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
python生成器的使用方法
2013/11/21 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python subprocess模块常见用法分析
2018/06/12 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
Pandas之缺失数据的实现
2021/01/06 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
行政总监岗位职责
2013/12/05 职场文书
公司企业表扬信
2014/01/11 职场文书
企业节能减排实施方案
2014/03/19 职场文书
我的长生果教学反思
2014/04/28 职场文书
电工技术比武方案
2014/05/11 职场文书
企业文化口号
2014/06/12 职场文书
专题组织生活会方案
2014/06/15 职场文书
工伤私了协议书范本
2014/11/24 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
检察院起诉书
2015/05/20 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书