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 相关文章推荐
Django中更新多个对象数据与删除对象的方法
Jul 17 Python
python字符串的常用操作方法小结
May 21 Python
python下10个简单实例代码
Nov 15 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
python 3.7.0 安装配置方法图文教程
Aug 27 Python
python random从集合中随机选择元素的方法
Jan 23 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 Python
python3使用diagrams绘制架构图的步骤
Apr 08 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中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
Python 变量类型详解
2018/10/10 Python
Python tkinter label 更新方法
2018/10/11 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
视光学专业毕业生推荐信
2013/10/28 职场文书
银行求职信个人范文
2013/12/16 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
教师开学感言
2014/02/14 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
讲解员培训方案
2014/05/04 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
保险公司增员口号
2015/12/25 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python