【发布时间】:2019-08-01 12:54:29
【问题描述】:
我的目标是能够从 PHP 调用要执行特定 python 版本(conda 虚拟环境)的 python 脚本。
目前,我只能使用默认的 python 版本来执行它。 (2.7 和 3.6)。
因此,我从一个 php 脚本调用要在 python3 默认系统版本中执行的脚本,并从该脚本调用另一个脚本以通过 anaconda 虚拟环境执行。所以我尝试使用 subprocess 但它不起作用,并且我得到一个权限错误:
我从 php 调用 python 3 脚本 (python_transfer.py),然后从 python_transfer.py 调用脚本 (ptt.py) 以通过 python 的 anaconda 版本执行。
php 文件
$command = 'python3 /var/software/python_transfer.py';
exec($command,$output, $r);
ob_start();
exec($command . " 2>&1", $output);
$result = ob_get_contents();
ob_end_clean();
echo '<pre>';
print_r($output);
echo '</pre>';
python_transfer.py 文件:
import subprocess
output = subprocess.check_output(["/root/anaconda3/envs/10/bin/python3.6", "/var/software/ptt.py"])
ptt.py 文件:
print("this is a test")
输出:
[0] => Traceback (most recent call last):
[1] => File "/var/software/python_transfer.py", line 32, in
[2] => output = subprocess.check_output(["/root/anaconda3/envs/10/bin/python3.6", "/var/software/ptt.py"])
[3] => File "/usr/lib/python3.6/subprocess.py", line 356, in check_output
[4] => **kwargs).stdout
[5] => File "/usr/lib/python3.6/subprocess.py", line 423, in run
[6] => with Popen(*popenargs, **kwargs) as process:
[7] => File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
[8] => restore_signals, start_new_session)
[9] => File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
[10] => raise child_exception_type(errno_num, err_msg, err_filename)
[11] => PermissionError: [Errno 13] Permission denied: '/root/anaconda3/envs/10/bin/python3.6'
【问题讨论】:
标签: php python python-3.x ubuntu anaconda