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中操作时间之strptime()方法的使用
Dec 30 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
python实现随机漫步算法
Aug 27 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
python实例化对象的具体方法
Jun 17 Python
PyTorch的torch.cat用法
Jun 28 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
python实现socket简单通信的示例代码
Apr 13 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实现留言板功能的详细代码
2017/03/25 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
2015/03/04 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
django-allauth入门学习和使用详解
2019/07/03 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
护士实习生自我鉴定范文
2013/12/10 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
学习党章心得体会2016
2016/01/15 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis