Mam instalację WordPress na osobistym blogu i stopniowo przenoszę wszystkie małe fragmenty sieci, które pisałem przez lata na stronach blogu.
Jedną z takich stron jest http://www.projecttoomanycooks.co.uk/cgi-bin/memory/majorAnalysis.py, który jest prostym skryptem Pythona, który zwraca listę słów - chciałbym osadzić to zachowanie na stronie wordpress - czy ktoś mógłby skierować mnie w dobrym kierunku, jeśli chodzi o łatwy sposób na uruchomienie Pythona w Wordpress?
EDYCJA - po cudownej odpowiedzi poniżej mam znacznie więcej ... ale niestety nadal nie całkiem tam ...
Mam python, który wykonuje się na serwerze ...
projecttoomanycooks server [~/public_html/joereddington/wp-content/plugins]#./hello.py
Hello World!
i znajduje się w tym samym katalogu, co aktywowana wtyczka ...
Kod python ... który ma następujący kod ...
#!/usr/bin/python
print("Hello World!")
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;
}
Odpowiedzi:
Możesz użyć
popen()
do odczytu lub zapisu w skrypcie Python (działa to również z każdym innym językiem). Jeśli potrzebujesz interakcji (zmienne przekazujące) użyjproc_open()
.Prosty przykład do wydrukowania Hello World! we wtyczce WordPress
Utwórz wtyczkę, zarejestruj krótki kod:
Teraz możesz użyć tego krótkiego kodu w edytorze postów za pomocą
[python]
lub[python file="filename.py"]
.Umieść skrypty Pythona, których chcesz użyć, w tym samym katalogu, co plik wtyczki. Możesz także umieścić je w katalogu i dostosować ścieżkę w module obsługi krótkich kodów.
Teraz utwórz skomplikowany skrypt w języku Python:
I to wszystko. Użyj krótkiego kodu i uzyskaj następujące dane wyjściowe:
źródło
Śledziłem przykładowy skrypt od pierwszej odpowiedzi, ale nie otrzymywałem żadnych danych wyjściowych ani błędów.
Zmieniłem tę linię:
do tego:
a następnie dostał komunikat „odmowa zezwolenia”.
Na konsoli pobiegłem
odświeżyła stronę i wszystko działało idealnie.
To może być problem, który Joe widział powyżej. Przepraszam, nie mam wystarczającej liczby przedstawicieli, aby skomentować Mam nadzieję, że to komuś pomoże.
źródło
chmod +x filename.py
zrobiOto mały skrypt, który używa,
proc_open
jak wspomniano powyżej, do wysłania jednej prostej zmiennej tekstowej do skryptu python:Dodano kilka testów na dole, aby sprawdzić, czy plik python jest
rwx
. Myślę, że lepszym sposobem na wysłanieargv
byłoby użycie fwrite, ale nie działało to dla mnie po tym samouczku .Oto skrypt, którego użyłem. Jak wspomniano w komentarzach powyżej
#!/usr/bin/env python
, w zależności od serwera może być konieczne coś podobnego .źródło