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中的urllib2模块
Nov 13 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
python实现复制文件到指定目录
Oct 16 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
Python实现随机取一个矩阵数组的某几行
Nov 26 Python
用python3读取python2的pickle数据方式
Dec 25 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
python基于opencv批量生成验证码的示例
Apr 28 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使用json_encode对变量json编码
2014/04/07 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP中常用的魔术方法
2017/04/28 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
解决python Markdown模块乱码的问题
2019/02/14 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
班级德育工作实施方案
2014/02/21 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
网络营销实训总结
2015/08/03 职场文书
SQL Server删除表中的重复数据
2022/05/25 SQL Server
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL