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使用PIL缩放网络图片并保存的方法
Apr 24 Python
详解Python当中的字符串和编码
Apr 25 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
在CMD命令行中运行python脚本的方法
May 12 Python
python基于http下载视频或音频
Jun 20 Python
python+opencv实现霍夫变换检测直线
Oct 23 Python
Python根据成绩分析系统浅析
Feb 11 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
简单分析python的类变量、实例变量
Aug 23 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
Python 文本滚动播放器的实现代码
Apr 25 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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中实现简单的ACL 完结篇
2011/09/07 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
Symfony生成二维码的方法
2016/02/04 PHP
详解php协程知识点
2018/09/21 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
javascript 有趣而诡异的数组
2009/04/06 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
vue组件间通信解析
2017/03/01 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
python读取中文txt文本的方法
2018/04/12 Python
django settings.py 配置文件及介绍
2019/07/15 Python
pycharm快捷键汇总
2020/02/14 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Python如何将装饰器定义为类
2020/07/30 Python
运动会广播稿150字(9篇)
2014/09/20 职场文书
2014年公务员工作总结
2014/11/18 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
社区服务理念口号
2015/12/25 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android