用python執行 js代碼__來自腳本之家


""

github地址 :https://github.com/emmetio/pyv8-binaries

""

 

安裝依賴

首先安裝依賴:Boost, 這一步網上的大部分教程都差不多,也是必須的;

 
1
2
3
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第三方包的目錄里面就好,比如我的是:

?
1
2
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 正常!

執行下面的測試代碼:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
import PyV8
 
ctxt = PyV8.JSContext()
ctxt.enter()
func = ctxt. eval ( """
   (function(){
     function hello(){
       return "Hello world.";
     }
     return hello();
   })
""" )
print func()

執行輸出Hello World 就說明安裝成功了。可以去模擬登錄了~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM