2017-06-23 85 views
1

我想用使用了shell_exec

$data = escapeshellarg($data); 
$resultpy = shell_exec("/usr/local/bin/python3 path/to/myscript.py 2>&1 $data"); 

$數據JSON對象來運行python3 3.6.1版的腳本了PHP的包含浮點數從USR/local/bin目錄執行python3了PHP的上我想在python中做一些計算。由於在Mac OS X 10.9.5上安裝後,python3沒有出現在/ usr/bin /目錄中,所以我確實爲python3設置了一個本地bin,用於跟蹤Gordon Davisson的建議Cannot create a symlink inside of /usr/bin even as sudo。我對python2做了同樣的檢查,看它是否會在原理上工作。當使用

$resultpy = shell_exec("/usr/local/bin/python2 path/to/myscript.py 2>&1 $data"); 

,我可以用

$resultpy = shell_exec("/usr/local/bin/python3 path/to/myscript.py 2>&1 $data"); 

時,我也可以用在/ usr /本地成功調用殼都python3與python2運行python腳本,並得到預期的輸出,而不是/ bin/python3或/ usr/local/bin/python2。

可能是python腳本本身有問題嗎(也許python3與python2相比有些語法改變)?

from collections import OrderedDict 
import sys, json 
import scipy 
import scipy.cluster.hierarchy as sch 

try: 
data = json.loads(sys.argv[1], object_pairs_hook=OrderedDict) 

except (ValueError, TypeError, IndexError, KeyError) as e: 
print json.dumps({'error': str(e)}) 
sys.exit(1) 

print json.dumps(data) 

我還在python腳本的頂部添加了一個she-bang行,但是這並沒有像預期的那樣解決它。所有導入模塊都安裝在兩個版本中。任何幫助,這是非常感謝!

+1

括在您打印括號中的變量(亦即。'打印(....)') –

+1

謝謝,我也是! – schustischuster

回答

2

如果你想這在python3工作,你就需要打印變更線

from collections import OrderedDict 
import sys, json 
import scipy 
import scipy.cluster.hierarchy as sch 

try: 
    data = json.loads(sys.argv[1], object_pairs_hook=OrderedDict) 

except (ValueError, TypeError, IndexError, KeyError) as e: 
print(json.dumps({'error': str(e)})) 
sys.exit(1) 

print(json.dumps(data)) 
+0

非常感謝您解決這個問題! – schustischuster