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 相关文章推荐
python3之微信文章爬虫实例讲解
Jul 12 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
Python操作redis和mongoDB的方法
Dec 19 Python
Python @property及getter setter原理详解
Mar 31 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
Django使用echarts进行可视化展示的实践
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
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
offsetParent 算法分析
2010/04/05 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
js实现小星星游戏
2020/03/23 Javascript
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python使用matplotlib画饼状图
2018/09/25 Python
Python 函数list&read&seek详解
2019/08/28 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python API自动化框架总结
2019/11/12 Python
pandas 对group进行聚合的例子
2019/12/27 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
校园餐饮创业计划书
2014/01/10 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
爱之链教学反思
2014/04/30 职场文书
个人融资协议书
2014/10/02 职场文书