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中wx将图标显示在右下角的脚本代码
Mar 08 Python
连接Python程序与MySQL的教程
Apr 29 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
浅谈function(函数)中的动态参数
Apr 30 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
深入了解python中元类的相关知识
Aug 29 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
Python数据正态性检验实现过程
Apr 18 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 Python
python中random.randint和random.randrange的区别详解
Sep 20 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笔记之常用文件操作
2010/10/12 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
初品cakephp 入门基础
2012/02/16 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python+django实现简单的文件上传
2016/08/17 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
postman传递当前时间戳实例详解
2019/09/14 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
商场促销活动策划方案
2014/08/18 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
导游词400字
2015/02/13 职场文书
工商行政处罚决定书
2015/06/24 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技