Python은 사용 용이성, 강력한 라이브러리 및 간단한 구문으로 인해 계속해서 인기를 얻고 있습니다. 필자는 WordPress의 개별 기능을 PHP로 변환하기 전에 Python으로 프로토타이핑하는 경우가 많습니다.
하지만 그렇게 하는 대신 WordPress에서 Python을 실행하는 것이 어떻습니까? 이 게시물에서는 WordPress 웹 사이트에서 Python 코드를 직접 실행하는 데 사용할 수 있는 다양한 방법에 대해 설명합니다.
WordPress에서 Python 스크립트 실행
exec() 라는 내장 PHP 함수를 사용하여 Python을 포함한 외부 스크립트를 실행할 수 있습니다. 이 작업을 수행하려면 PHP와 Python 모두에서 약간의 코드가 필요하지만 모든 것이 어떻게 조화를 이루는지 이해하면 매우 쉽습니다.
플러그인 또는 코드 스니펫을 생성할 수 있습니다. 빌드하려는 항목에 따라 다르지만 일반적으로 웹 사이트의 프런트엔드에서 관리하기 쉬운 코드 스니펫을 만듭니다.
먼저 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; }
<?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 엔드포인트에 액세스합니다.