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局域网ip扫描示例分享
Apr 03 Python
轻松实现python搭建微信公众平台
Feb 16 Python
Python实现简单字典树的方法
Apr 29 Python
Python处理中文标点符号大集合
May 14 Python
Python查看微信撤回消息代码
Jun 07 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 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新手上路(三)
2006/10/09 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
小程序实现tab标签页
2020/11/16 Javascript
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
使用python解析xml成对应的html示例分享
2014/04/02 Python
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python实现杨氏矩阵查找
2019/03/02 Python
Python 如何提高元组的可读性
2019/08/26 Python
深入分析python 排序
2020/08/24 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
类的返射机制中的包及核心类
2016/09/12 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
实习生单位鉴定意见
2013/12/04 职场文书
护士实习鉴定范文
2013/12/22 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
安全标语大全
2014/06/10 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python