Ubuntu下安裝PyV8
這幾天需要在使用PyV8來(lái)進(jìn)行python與javascript的交互。之前在window下安裝過(guò),直接使用的exe安裝的,也沒(méi)有遇到什么問(wèn)題。
結(jié)果這次在Ubuntu安裝遇到了不少坑--主要是網(wǎng)上的辦法都不可行,不知道為啥。最終折騰了一晚上,終于好了。
安裝依賴
首先安裝依賴:Boost, 這一步網(wǎng)上的大部分教程都差不多,也是必須的;
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
網(wǎng)上的大部分教程均是使用svncheckout出V8,PyV8的代碼,然后再設(shè)置什么V8的目錄為V8_HOME最后在編譯PyV8;先不說(shuō)能不能使用svn遷出,后來(lái)去google.code網(wǎng)站上, 下載了源代碼,結(jié)果編譯期間出各種錯(cuò)誤,根本沒(méi)辦法執(zhí)行。
還有一些直接使用pip安裝的教程,也是報(bào)各種錯(cuò),缺少這個(gè)啦,缺少那個(gè)啦。
于是就想直接找到二進(jìn)制文件,直接拷到python的包目錄得了。結(jié)果這條路還算順暢!最終比較輕松的安裝成功了。
二進(jìn)制文件googlecode官網(wǎng)有,有人在github上也提供了很全面的二進(jìn)制安裝文件https://github.com/emmetio/pyv8-binaries 找到適合你機(jī)器的版本下載.
解壓出來(lái)應(yīng)該有如下兩個(gè)文件:一個(gè)源碼,一個(gè)二進(jìn)制文件。一般Python的第三方包有這倆文件就夠了,
PyV8.py
_PyV8.so
然后把這兩個(gè)文件拷到你的python第三方包的目錄里面就好,比如我的是:
cd pyv8 //進(jìn)入解壓后的目錄 sudo cp * /usr/lib/python2.7/dist-packages/
之后嘗試導(dǎo)入import PyV8結(jié)果報(bào)以下的一個(gè)錯(cuò)誤:
ImportError: libboost_python_py27.so.1.54.0: cannot open shared object file: No such file or directory
當(dāng)時(shí)看到這個(gè)錯(cuò)誤,然后想到我之前已經(jīng)安裝好了依賴呢,為啥還會(huì)報(bào)這個(gè)錯(cuò)誤呢。
大致查了一下,有的說(shuō)是鏈接庫(kù)路徑設(shè)置問(wèn)題,之后檢查了一下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
果然有這個(gè)鏈接庫(kù),那為啥檢測(cè)不到呢,問(wèn)題就出在環(huán)境變量LD_LIBRARY_PATH上,因?yàn)閜ython尋找鏈接庫(kù)的時(shí)候,是從該路徑里面找的。
然而我echo $LD_LIBRARY_PATH卻啥都沒(méi)有,只要把上面的路徑加入到環(huán)境變量就可以吧。--于是在.bashrc最后加入了一行:(路徑可能不一致,請(qǐng)根據(jù)自己的實(shí)際情況添加)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu
保存退出之后,再用source ~/.bashrc 重載一下就好了。再一次import PyV8 正常!
執(zhí)行下面的測(cè)試代碼:
import PyV8
ctxt = PyV8.JSContext()
ctxt.enter()
func = ctxt.eval("""
(function(){
function hello(){
return "Hello world.";
}
return hello();
})
""")
print func()
執(zhí)行輸出Hello World 就說(shuō)明安裝成功了。可以去模擬登錄了~~~
相關(guān)文章
Python人工智能實(shí)戰(zhàn)之對(duì)話機(jī)器人的實(shí)現(xiàn)
本文將通過(guò)Python開發(fā)一個(gè)可以講笑話的機(jī)器人,可以自由定制功能,想講幾個(gè)笑話就講幾個(gè)笑話。文中的示例代碼講解詳細(xì),感興趣的可以動(dòng)手試一試2022-02-02
Pyqt QImage 與 np array 轉(zhuǎn)換方法
今天小編就為大家分享一篇Pyqt QImage 與 np array 轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
python求解數(shù)組中兩個(gè)字符串的最小距離
這篇文章主要為大家詳細(xì)介紹了python求解數(shù)組中兩個(gè)字符串的最小距離,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
python使用PyPDF2 和 pdfplumber操作PDF文件
本文主要介紹了Python中用于操作PDF的兩個(gè)庫(kù):PyPDF2和pdfplumber,下面就來(lái)具體介紹一下兩個(gè)庫(kù)的使用方法,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01
Python使用MoviePy實(shí)現(xiàn)編輯音視頻并添加字幕
MoviePy是一個(gè)用于視頻編輯的Python模塊,它可被用于一些基本操作,本文主要介紹了如何使用編輯音視頻并添加字幕,感興趣的小伙伴可以了解下2024-01-01
python利用Tesseract識(shí)別驗(yàn)證碼的方法示例
無(wú)論是是自動(dòng)化登錄還是爬蟲,總繞不開驗(yàn)證碼,這次就來(lái)談?wù)刾ython中光學(xué)識(shí)別驗(yàn)證碼模塊Tesseract,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Python計(jì)算公交發(fā)車時(shí)間的完整代碼
這篇文章主要介紹了Python計(jì)算公交發(fā)車時(shí)間的完整代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02

