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中apply函数的用法实例教程
Jul 31 Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
详解Python多线程
Nov 14 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
Python配置文件处理的方法教程
Aug 29 Python
Python:slice与indices的用法
Nov 25 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
计算机专业推荐信范文
2013/11/27 职场文书
平面设计师工作职责范文
2013/12/03 职场文书
市场营销求职信范文
2014/02/21 职场文书
走群众路线剖析材料
2014/10/09 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书