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的Django REST框架中的序列化及请求和返回
Apr 11 Python
Python实现感知机(PLA)算法
Dec 20 Python
pytorch训练imagenet分类的方法
Jul 27 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
如何让python的运行速度得到提升
Jul 08 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运行时强制显示出错信息的代码
2011/04/20 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
详解Django中间件的5种自定义方法
2018/07/26 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
Python while循环使用else语句代码实例
2020/02/07 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
大四学生思想汇报
2014/01/13 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
工作决心书
2014/03/11 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
教师节校长致辞
2015/07/31 职场文书
如何书写授权委托书?
2019/06/25 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL