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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
闭包在python中的应用之translate和maketrans用法详解
Aug 27 Python
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
详解Python用户登录接口的方法
Apr 17 Python
python pytest进阶之fixture详解
Jun 27 Python
简单了解python的break、continue、pass
Jul 08 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
python中open函数的基本用法示例
Sep 07 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 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 mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
div层的移动及性能优化
2010/11/16 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python使用剪切板的方法
2017/06/06 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
Python中遍历列表的方法总结
2019/06/27 Python
python实现字典嵌套列表取值
2019/12/16 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
财务经理的岗位职责
2013/12/17 职场文书
初中生操行评语大全
2014/04/24 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
介绍信格式样本
2015/05/05 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python
javascript函数式编程基础
2021/09/15 Javascript
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技