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 相关文章推荐
urllib2自定义opener详解
Feb 07 Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
python实现的一个火车票转让信息采集器
Jul 09 Python
python中global用法实例分析
Apr 30 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
Python实现二维数组输出为图片
Apr 03 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
基于Python快速处理PDF表格数据
Jun 03 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
通过javascript设置css属性的代码
2009/12/28 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
详解Python中的type()方法的使用
2015/05/21 Python
判断网页编码的方法python版
2016/08/12 Python
python 多线程串行和并行的实例
2019/02/22 Python
Python 解析简单的XML数据
2020/07/24 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
餐饮主管岗位职责
2013/12/10 职场文书
给客户的感谢信
2015/01/21 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书