Ich habe eine WordPress-Installation für ein persönliches Blog und portiere nach und nach alle kleinen Webbits, die ich im Laufe der Jahre geschrieben habe, auf Seiten im Blog.
Eine solche Seite ist http://www.projecttoomanycooks.co.uk/cgi-bin/memory/majorAnalysis.py. Hierbei handelt es sich um ein einfaches Python-Skript, das eine Liste von Wörtern zurückgibt. Ich möchte dieses Verhalten in eine WordPress-Seite einbetten - Könnte mich jemand in die richtige Richtung weisen, um mit WordPress auf einfache Weise einen Punkt Python zu spielen?
BEARBEITEN - nach der wunderbaren Antwort unten bin ich viel weiter gekommen ... aber leider immer noch nicht ganz da ...
Ich habe Python, das auf dem Server ausgeführt wird ...
projecttoomanycooks server [~/public_html/joereddington/wp-content/plugins]#./hello.py
Hello World!
und es befindet sich im selben Verzeichnis wie das aktivierte Plugin ...
Der Python-Code ... der den folgenden Code hat ...
#!/usr/bin/python
print("Hello World!")
Die 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;
}
Antworten:
Mit können Sie ein Python-Skript
popen()
lesen oder schreiben (dies funktioniert auch mit jeder anderen Sprache). Wenn Sie eine Interaktion (Übergabe von Variablen) benötigen, verwenden Sieproc_open()
.Ein einfaches Beispiel zum Drucken von Hello World! in einem WordPress-Plugin
Erstelle das Plugin, registriere einen Shortcode:
Jetzt können Sie diesen Shortcode im Post-Editor mit
[python]
oder verwenden[python file="filename.py"]
.Legen Sie die Python-Skripte, die Sie verwenden möchten, in dasselbe Verzeichnis wie die Plugin-Datei. Sie können sie auch in ein Verzeichnis stellen und den Pfad im Shortcode-Handler anpassen.
Erstellen Sie nun ein komplexes Python-Skript wie folgt:
Und das ist alles. Verwenden Sie den Shortcode und erhalten Sie die folgende Ausgabe:
quelle
Ich habe das Beispielskript von der ersten Antwort an befolgt, aber keine Ausgabe oder Fehler erhalten.
Ich habe diese Zeile geändert:
dazu:
und bekam dann eine "Erlaubnis verweigert" Nachricht.
Auf der Konsole lief ich
hat die Seite aktualisiert und alles hat perfekt funktioniert.
Dies könnte das Problem sein, das Joe oben gesehen hat. Ich habe nicht genug Repräsentanten, um einen Kommentar abzugeben, sorry. Hoffe das hilft jemandem.
quelle
chmod +x filename.py
wird es tunHier ist ein kleines Skript, das
proc_open
wie oben erwähnt verwendet wird, um eine einfache Textvariable an ein Python-Skript zu senden:Unten wurden einige Tests hinzugefügt, um festzustellen, ob es sich um eine Python-Datei handelt
rwx
. Ich denke, ein besserer Weg, das zu senden,argv
wäre die Verwendung von fwrite, aber nach diesem Tutorial hat es bei mir nicht funktioniert .Hier ist das Python-Skript, das ich verwendet habe. Wie in den obigen Kommentaren erwähnt,
#!/usr/bin/env python
kann je nach Server etwas wie erforderlich sein.quelle