Tengo una instalación de WordPress para un blog personal y gradualmente estoy transfiriendo todos los pequeños fragmentos web que he escrito a lo largo de los años a las páginas del blog.
Una de esas páginas es http://www.projecttoomanycooks.co.uk/cgi-bin/memory/majorAnalysis.py, que es un simple script de Python que devuelve una lista de palabras; me gustaría incorporar ese comportamiento dentro de una página de WordPress ¿Podría alguien señalarme en la dirección correcta para la forma más fácil de ejecutar un punto de Python dentro de WordPress?
EDITAR: siguiendo la maravillosa respuesta a continuación, he llegado mucho más lejos ... pero desafortunadamente todavía no estoy allí ...
Tengo Python que se ejecuta en el servidor ...
projecttoomanycooks server [~/public_html/joereddington/wp-content/plugins]#./hello.py
Hello World!
y está en el mismo directorio que el complemento activado ...
El código de Python ... que tiene el siguiente código ...
#!/usr/bin/python
print("Hello World!")
El php:
<?php
/**
* Plugin Name: Joe's python thing.
* Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
* Description: A brief description of the Plugin.
* Version: The Plugin's Version Number, e.g.: 1.0
* Author: Name Of The Plugin Author
* Author URI: http://URI_Of_The_Plugin_Author
* License: A "Slug" license name e.g. GPL2
*/
/*from http://wordpress.stackexchange.com/questions/120259/running-a-python-scri
pt-within-wordpress/120261?noredirect=1#120261 */
add_shortcode( 'python', 'embed_python' );
function embed_python( $attributes )
{
$data = shortcode_atts(
array(
'file' => 'hello.py'
),
$attributes
);
$handle = popen( __DIR__ . '/' . $data['file'], 'r');
$read = fread($handle, 2096);
pclose($handle);
return $read;
}
Respuestas:
Puede usar
popen()
para leer o escribir en un script de Python (esto también funciona con cualquier otro idioma). Si necesita interacción (pasar variables) useproc_open()
.Un ejemplo simple para imprimir Hello World! en un complemento de WordPress
Cree el complemento, registre un código corto:
Ahora puede usar ese shortcode en el editor de publicaciones con
[python]
o[python file="filename.py"]
.Coloque los scripts de Python que desea usar en el mismo directorio que el archivo del complemento. También puede colocarlos en un directorio y ajustar la ruta en el controlador de shortcode.
Ahora cree un script Python complejo como este:
Y eso es todo. Use el shortcode y obtenga esta salida:
fuente
Seguí el script de ejemplo desde la primera respuesta, pero no obtenía resultados ni errores.
Cambié esta línea:
a esto:
y luego recibí un mensaje de "permiso denegado".
En la consola, corrí
refrescó la página y todo funcionó a la perfección.
Este puede ser el problema que Joe estaba viendo arriba. No tengo suficiente representante para hacer un comentario, lo siento. Espero que esto ayude a alguien.
fuente
chmod +x filename.py
haráAquí hay una pequeña secuencia de comandos que se utiliza
proc_open
como se indicó anteriormente, para enviar una variable de texto simple a una secuencia de comandos de Python:Se agregaron algunas pruebas en la parte inferior para ver si el archivo Python es
rwx
. Creo que una mejor manera de enviarargv
sería usar fwrite, pero no funcionó para mí siguiendo este tutorial .Aquí está el script de Python que utilicé. Como se señaló en los comentarios anteriores, algo como
#!/usr/bin/env python
puede ser necesario, dependiendo del servidor.fuente