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常用模块用法分析
Sep 08 Python
Python简单生成8位随机密码的方法
May 24 Python
浅谈python函数之作用域(python3.5)
Oct 27 Python
Python中static相关知识小结
Jan 02 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
Django中ORM外键和表的关系详解
May 20 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
Python模块_PyLibTiff读取tif文件的实例
Jan 13 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
Python爬虫制作翻译程序的示例代码
Feb 22 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP.vs.JAVA
2016/04/29 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
SVG实现时钟效果
2018/07/17 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
35个Python编程小技巧
2014/04/01 Python
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
Python语言进阶知识点总结
2019/05/28 Python
Python文件路径名的操作方法
2019/10/30 Python
使用python实现画AR模型时序图
2019/11/20 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
面向对象编程OOP的优点
2013/01/22 面试题
业务员岗位职责
2013/11/16 职场文书
学术会议欢迎词
2014/01/09 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL