文档章节

记录Ubuntu & Windows下安装PyV8

mickelfeng
 mickelfeng
发布于 2017/05/04 17:08
字数 889
阅读 61
收藏 0

2016.5.16更新: 提供PyV8 for python2.7 的window安装包网盘下载

这几天需要在使用PyV8来进行PythonJavaScript的交互。之前在window下安装过,也没有遇到什么问题。
结果这次在Ubuntu安装遇到了不少坑–主要是网上的办法都不可行,不知道为啥。最终折腾了一晚上,终于好了。

windows下的安装

在windows下安装要简单很多,如果有了c++环境之后,只需要在pyv8下载(貌似只有python2.7)下载适合自己系统版本的exe文件即可,然后直接安装就好了,相对来说简单一些

  1. 如果上不去google, 可以用下面的网盘地址:
    PyV8 for python2.7
  2. 还有一种方式: 利用有人分享的二进制文件:pyv8-binaries, 这里面版本比较全,但是未提供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 就说明安装成功了。可以去模拟js代码了~~~

本文转载自:http://blog.csdn.net/hanshileiai/article/details/51628173

上一篇: PyQt 使用总结
mickelfeng

mickelfeng

粉丝 234
博文 2768
码字总数 597345
作品 0
成都
高级程序员
私信 提问
UBUNTU12下pyv8 的安装部骤

V8是谷歌开源的JavaScript引擎, 使用C++开发,并在谷歌浏览器中使用. 它可以独立运行, 也可以嵌入到任何C++应用程序中.pyv8 是 Python 的对 v8 引擎一个封装. 一、先安装boost 1. 下载boost...

清风徐不来
2013/03/08
0
0
sublime text3 插件Emmet和pyv8离线安装方法

在Sublime Text 3 安装Ememt时出现PyV8安装不上而导致Ememt不能使用,可以去https://github.com/emmetio/pyv8-binaries/blob/master/pyv8-win64-p3.zip 上面下载PyV8然后安照下面写的那样将下...

风铃渡LOVE
2018/06/28
0
0
关于Sublime Text pyV8无法加载的问题!

昨天想换上Sublime Text 3可是忘记备份2了,结果重装后Emmet完全没用了,看了N多的文章说是pyV8。 于是手动拖了PyV8回来,放进去还是不行。 于是去到公司里装3居然正常,于是全部打包拖了回来...

东厢里的一只喵
2013/09/28
18.3K
2
PyV8是C++实现的吗?

Pyv8是C++实现的还是python实现的? 那如果我的项目里用到了PyV8,想要把它放到SAE上运行,如果不是纯python实现的话pyv8库能正常引用吗?

cyhhao
2015/01/08
337
1
python爬虫遇到JS加密,pyv8运行js,详细解密过程

首先说一下什么是加密,所谓js加密大多出现在表单提交过程中,下面我将以中国电信为例,详细讲解如何利用pyv8来加密登录的密码。要说明的是pyv8目前仅仅支持python2,用的下伙伴要注意自己的p...

xu一直在路上
2018/07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

etcd 在超大规模数据场景下的性能优化

作者 | 阿里云智能事业部高级开发工程师 陈星宇(宇慕) 概述 etcd是一个开源的分布式的kv存储系统, 最近刚被cncf列为沙箱孵化项目。etcd的应用场景很广,很多地方都用到了它,例如kubernete...

zhaowei121
29分钟前
2
0
MYSQL主从介绍

MYSQL软件概念 MYSQL是一款数据库,关系型数据库系统; MYSQL主要用于存放:员工姓名、身份证ID、商城订单及金额、销售业绩及报告,学生考试成绩、网站帖子、论坛用户信息等; MYSQL在WEB架构...

寰宇01
32分钟前
2
0
org.apache.cxf.interceptor.Fault: null

出现这个异常的原因:json字符串为null 所以会出现这个错误。需要加上条件判断。 如果不是这个原因,可以参考: https://blog.csdn.net/rshw123456/article/details/8001677...

嘿嘿嘿IT
32分钟前
1
0
gradle控制so库的输出位置

gradle.taskGraph.beforeTask { task -> String abi = "lib/armeabi/" def TASK_NAME = "transformNativeLibsWithStripDebugSymbolFor" String buildType = "debug" //S......

Gemini-Lin
32分钟前
3
0
AndroidL 开机展示Keyguard锁屏机制初探

目录 目录 锁屏时序图 开机启动到PhoneWindowManager的systemReady方法 锁屏加载流程 PhoneWindowManager KeyguardServiceDelegate KeyguardServiceWrapper KeyguardService KeyguardViewMe......

天王盖地虎626
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部