WordPress에서 Python 스크립트를 실행하는 방법

게시 됨: 2023-08-03

Python은 사용 용이성, 강력한 라이브러리 및 간단한 구문으로 인해 계속해서 인기를 얻고 있습니다. 필자는 WordPress의 개별 기능을 PHP로 변환하기 전에 Python으로 프로토타이핑하는 경우가 많습니다.

하지만 그렇게 하는 대신 WordPress에서 Python을 실행하는 것이 어떻습니까? 이 게시물에서는 WordPress 웹 사이트에서 Python 코드를 직접 실행하는 데 사용할 수 있는 다양한 방법에 대해 설명합니다.

WordPress에서 Python 스크립트 실행

exec() 라는 내장 PHP 함수를 사용하여 Python을 포함한 외부 스크립트를 실행할 수 있습니다. 이 작업을 수행하려면 PHP와 Python 모두에서 약간의 코드가 필요하지만 모든 것이 어떻게 조화를 이루는지 이해하면 매우 쉽습니다.

david-clode-ojlt2xbwuws-unsplash-1

플러그인 또는 코드 스니펫을 생성할 수 있습니다. 빌드하려는 항목에 따라 다르지만 일반적으로 웹 사이트의 프런트엔드에서 관리하기 쉬운 코드 스니펫을 만듭니다.

먼저 Python이 서버에 전체적으로 설치되어 있는지 확인합니다. 루트 액세스 권한이 있으면 직접 할 수 있지만 그렇지 않은 경우 웹 호스트에 설치를 요청해야 합니다. 예를 들어 Cloudways에서 Python을 설치해야 했습니다.

PHP 함수

WordPress에서 Python 스크립트를 실행하는 PHP 함수를 만드는 코드를 생성합니다. 사용 편의성을 위해 먼저 코드 조각 관리 플러그인과 함께 사용할 수 있는 조각을 보여 드리겠습니다. 그런 다음 동일한 작업을 수행하는 사용자 지정 플러그인을 빌드하는 방법을 살펴보겠습니다.

이 기능을 사용하면 모든 Python 스크립트가 미디어 라이브러리에 상주하며 미디어 라이브러리 항목 ID를 지정하여 실행할 스크립트를 선택할 수 있습니다. Python MIME 형식을 업로드하도록 허용해야 할 수도 있습니다. 이 플러그인을 사용하여 활성화했습니다.

많은 오류 처리를 추가했기 때문에 이것은 약간 복잡해 보입니다. 그러나 그 핵심에서 모든 코드가 하는 일은 미디어 라이브러리에서 파일을 찾고 스크립트를 실행하여 결국 반환되는 모든 것을 출력하는 것입니다.

내 컴퓨터에 설치된 'python3'을 사용했습니다. 'python'으로 변경하고 싶을 수도 있습니다.

<?php function cwpai_run_python_script($media_id) { // 서버의 미디어 파일 경로 가져오기 $media_path = get_attached_file($media_id); // 미디어 파일이 존재하는지 확인 if ($media_path) { // Python 명령어 설정 $python_command = 'python3 ' . escapeshellarg($media_path); // Python 스크립트를 실행하고 출력을 캡처합니다. exec($python_command, $output, $return_status); if ($return_status === 0) { // 스크립트가 성공적으로 실행되면 출력을 반환합니다. return implode("\n", $output); } else { // 스크립트 실행 실패, 오류를 기록하고 오류 메시지 반환 error_log('Error running Python script. Command: ' . $python_command); return 'Python 스크립트 실행 오류.'; } } else { // 미디어 파일을 찾을 수 없습니다. 오류를 기록하고 오류 메시지를 반환합니다. error_log('미디어 ID에 대한 미디어 파일을 찾을 수 없습니다. ' . $media_id); return '미디어 파일을 찾을 수 없습니다.'; } } // 미디어 ID가 6인 사용 예 $result = cwpai_run_python_script(6); // 결과 출력 또는 오류 처리 if (is_string($result)) { // 결과가 문자열인 경우 오류 메시지를 나타냅니다. echo $result; } else { // 결과가 문자열이 아니면 Python 스크립트의 출력이어야 합니다. // 출력을 표시하거나 필요한 경우 추가 처리를 수행합니다. echo $result; }

플러그인을 만들면 구조는 다음과 같습니다.

 wp-content/plugins/ cwpai_my-python-plugin/ cwpai_plugin.php assets/ py/ script.py

cwpai_plugin.php는 다음과 같습니다.

<?php /* 플러그인 이름: CWPAI My Python 플러그인 설명: 미디어 파일에 대한 Python 스크립트를 실행하는 플러그인입니다. 버전: 1.0 작성자: 이름 */ // 플러그인 코드가 여기에 표시됩니다. function cwpai_run_python_script($file_name) { // 플러그인 디렉토리 경로 얻기 $plugin_dir = plugin_dir_path(__FILE__); // 플러그인 디렉토리 $python_script_path = $plugin_dir에 상대적인 Python 스크립트 경로를 설정합니다. '자산/py/' . $file_name; // Python 스크립트 파일이 존재하는지 확인 if (file_exists($python_script_path)) { // Python 명령어 설정 $python_command = 'python3 ' . escapeshellarg($python_script_path); // Python 스크립트를 실행하고 출력을 캡처합니다. exec($python_command, $output, $return_status); if ($return_status === 0) { // 스크립트가 성공적으로 실행되면 출력을 반환합니다. return implode("\n", $output); } else { // 스크립트 실행 실패, 오류를 기록하고 오류 메시지 반환 error_log('Error running Python script. Command: ' . $python_command); return 'Python 스크립트 실행 오류.'; } } else { // Python 스크립트 파일을 찾을 수 없습니다. 오류를 기록하고 오류 메시지를 반환합니다. error_log('Python 스크립트 파일을 찾을 수 없습니다: ' . $python_script_path); return 'Python 스크립트 파일을 찾을 수 없습니다.'; } }

플러그인의 경우 특정 디렉토리(이 예에서는 assets/py)에 Python 스크립트를 포함하는 것이 더 빠르므로 FTP를 통해 추가하고 편집할 수 있습니다. 따라서 WordPress에서 실행할 Python이 많은 경우 더 좋습니다.

이를 사용하려면 다음 함수를 호출하기만 하면 됩니다.

// 파일명이 "example.py"인 사용 예 $result = cwpai_run_python_script('example.py'); // 결과 출력 또는 오류 처리 if (is_string($result)) { // 결과가 문자열인 경우 오류 메시지를 나타냅니다. echo $result; } else { // 결과가 문자열이 아니면 Python 스크립트의 출력이어야 합니다. // 출력을 표시하거나 필요한 경우 추가 처리를 수행합니다. echo $result; }

짧은 코드

"프로덕션"에서 Python 스크립트를 실행하기 위한 WP 단축 코드를 만드는 것도 도움이 될 수 있습니다. 위의 동일한 일반 기능을 사용하여 WordPress 단축 코드로 만들 수 있습니다.

function cwpai_run_python_script($atts) { // 단축 코드 속성 추출 $args = shortcode_atts(array('media_id' => '1'), $atts); // 서버의 미디어 파일 경로 가져오기 $media_path = get_attached_file($args['media_id']); // 미디어 파일이 존재하는지 확인 if ($media_path) { // Python 명령어 설정 $python_command = 'python3 ' . escapeshellarg($media_path); // Python 스크립트를 실행하고 출력을 캡처합니다. exec($python_command, $output, $return_status); if ($return_status === 0) { // 스크립트가 성공적으로 실행되면 출력을 반환합니다. return implode("\n", $output); } else { // 스크립트 실행 실패, 오류를 기록하고 오류 메시지 반환 error_log('Error running Python script. Command: ' . $python_command); return 'Python 스크립트 실행 오류.'; } } else { // 미디어 파일을 찾을 수 없습니다. 오류를 기록하고 오류 메시지를 반환합니다. error_log('Media file not found for media ID ' . $args['media_id']); return '미디어 파일을 찾을 수 없습니다.'; } } add_shortcode('run_python_script', 'cwpai_run_python_script');

이제 게시물과 페이지에서 단축 코드 [run_python_script media_] 를 직접 사용할 수 있습니다. "6"을 사용하려는 미디어 파일의 ID로 바꿉니다.

호스팅 서비스 사용

API를 통해 Python에 액세스할 수 있는 수십 개의 호스팅 서비스가 있습니다. 이는 특히 사용자 정의 플러그인을 생성한 것처럼 PHP에서 출력에 액세스할 수 있으므로(CURL 사용) 보다 복잡한 프로젝트 및 워크플로우에 유용할 수 있습니다.

먼저 Python으로 API를 만들어야 합니다. 여기에 좋은 자료가 있습니다. 기본적으로 Flask를 사용하여 API 끝점을 노출하는 웹앱을 만듭니다. 그런 다음 이러한 서비스 중 하나를 사용하여 해당 웹앱을 호스팅하고 PHP를 사용하여 다른 API 엔드포인트에 액세스합니다.

다음은 API가 있는 Python 앱의 예입니다.

# api.py import random from flask import Flask, request, jsonify app = Flask(__name__) things_list = [ "사과", "바나나", "당근", "개", "코끼리", "꽃", "기타" , "집", "이글루", "재킷" ] @app.route('/api/data', methods=['POST']) def process_data(): data = request.get_json() message = data.get ('message') random_thing = random.choice(things_list) response_data = {'response': f'수신된 메시지: {message}. 무작위 항목: {random_thing}'} return jsonify(response_data) if __name__ == '__main__': app.run(debug=True)

그리고 WordPress에서 해당 데이터를 사용할 수 있도록 PHP에서 액세스하는 방법(데이터베이스 필드 변경, 새 사용자 추가 등...)

<?php // API 끝점 URL $apiUrl = 'http://your-python-api-domain.com/api/data'; // Python API로 보낼 데이터 $data = array( 'message' => 'Hello from PHP!' ); // 데이터를 JSON으로 변환 $dataJson = json_encode($data); // cURL 세션 초기화 $ch = curl_init(); // cURL 옵션 설정 curl_setopt($ch, CURLOPT_URL, $apiUrl); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $dataJson); curl_setopt($ch, CURLOPT_HTTPHEADER, array('콘텐츠 유형: 애플리케이션/json')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 참); // cURL 세션 실행 및 응답 캡처 $response = curl_exec($ch);

이제 $response 데이터를 사용하여 모든 WordPress 기능과 함께 사용할 수 있습니다. 이것은 기본적인 예이지만 이를 수행하는 방법을 보여주는 것이 좋습니다.

약간의 기술 지식이 있고 저렴한 것을 원하는 경우 간단한 작업에 월 $2.50의 비용이 드는 Digital Ocean을 사용하여 Python 앱을 배포하는 것이 좋습니다.

빠르고 간단하고 쉬운 것을 원한다면 $5/월부터 시작하는 PythonAnywhere.com을 확인하십시오.

작은 시나리오 외에는 이 방법이 가장 좋은 방법일 것입니다.

파이썬을 PHP로 변환

또 다른 옵션은 단순히 Python을 PHP로 변환하고 Code Snippets와 같은 플러그인을 사용하여 해당 기능을 실행하는 것입니다.

수동으로 PHP로 변환하거나 ChatGPT 또는 CodeWP와 같은 도구를 사용하여 Python에 붙여넣고 PHP로 다시 작성하도록 요청할 수 있습니다. 다음은 WordPress 제작자를 위해 특별히 제작된 AI 도구인 CodeWP의 예입니다.

lepage-2023-07-24-at-12-45-16

결론

AI로 작업하는 WordPress 개발자이기 때문에 Python으로 무언가를 신속하게 모의하거나 언어로 완전한 프로덕션 수준 기능을 만들어야 하는 경우가 많습니다.

이러한 방법을 따르면 WordPress 사이트에서 Python을 빠르게 실행하고 생성할 수 있는 모든 출력에 액세스할 수 있습니다.