python파일 실행
본문
aws 가상서버입니다.
폴더보면
/usr/share/nginx/html/그누보드 이렇게 있는데요...
<?php
$python = `test.py`;
echo $python;
?>
이렇게 그누파일 있는곳에 같이 넣고
tython.py파일
------------------------
import random
import math
n = math.factorial(5)
print(random.randrange(100))
print(n)
print("파이썬")
------------
이 py파일을 실행해보려고 했더니 안되어서 보니
python은
/usr/lib64/python3.7 이렇게 설치되어 있네요.
이경우 어떻게 해야 할까요?
답변 3
`test.py` 만 실행해서는 command not found겠죠.
`python test.py`처럼 실행해야 합니다.
그리고, 체크는 아래처럼 하면 됩니다.
<?php
echo `python -V`;
아무것도 뜨지 않으면, Python 3.7 버전이 설치되었으니 아래처럼 해보세요.
<?php
echo `python3 -V`;
정상적으로 Python 버전이 뜨면, 아래처럼 변경하면 됩니다.
<?php
$python = `python3 test.py`;
echo $python;
실행하려면 exec 로 해야하지 않나요?
<?php
$python = `test.py`;
exec("python ".$python);
?>
이거 된건지 봐주시면 고맙겠습니다.
<?php
header('Content-Type: text/html; charset=UTF-8');
//변수에 한글이 포함될 경우 아래 코드를 추가한다.
putenv("LANG=ko_KR.UTF-8");
setlocale(LC_ALL, 'ko_KR.utf8');
$변수1 = "AAA";
$변수2 = "가나다 bbb";
$변수3 = "가 나 다"; //공백이 있을경우 문자열로 묶어줘야 함 //exec("python3 python.py ".$변수1." ".$변수2." \"".$변수3."\"", $output);
exec("cd /usr/share/nginx/html/ && python3 py1.py ".$변수1." ".$변수2." \"".$변수3."\"", $output);
//이렇게 하는 이유는 경로를 지정해주고 python3를 실행해야 정상적으로 작동.
//$rt=exec("ls");
//echo $rt;
//print_r($output);
echo $output[0]. ""; //Success1
echo $output[1]. ""; //Success2
echo $output[2]. ""; //AAA
echo $output[3]. ""; //가나다
echo $output[4]. ""; //가 나 다
?>
php는 위와 같고
파이썬 파일은 py1.py 인데 다음과 같이 하니
# -*- coding: utf-8 -*-
import sys
def call(var_1, var_2, var_3):
# 무언가를 처리하고..
# print로 값을 return해서 php에서 받을 수 있음
print('Success1', 'good')
print('Success2', 'bad')
print('Success3', 'no')
print('Success4', '11111111111111111')
print(var_1)
print(var_2)
print(var_3)
call(sys.argv[1], sys.argv[2], sys.argv[3])
그리고 브라우저에서 도메인/test.php 새로고침해보니
Success1 goodSuccess2 badSuccess3 noSuccess4 11111111111111111AAA
위와 같이 나옵니다.
질문1: 이제 되는건가요?
질문2: 이게 php파일에서 python 데이터를 가져오는건가요? 아니면 데이터도 가져오고 python 파일도 실행시키는 건가요?
파이썬 시작해본지가 며칠안되어 그렇습니다 헤헤