Eu tenho uma instalação do WordPress para um blog pessoal e gradualmente estou portando todos os pequenos bits da web que escrevi ao longo dos anos para as páginas do blog.
Uma dessas páginas é http://www.projecttoomanycooks.co.uk/cgi-bin/memory/majorAnalysis.py, que é um script python simples que retorna uma lista de palavras - eu gostaria de incorporar esse comportamento em uma página do wordpress - alguém poderia me apontar na direção certa para a maneira mais fácil de executar um ponto de python no wordpress?
EDIT - seguindo a maravilhosa resposta abaixo, eu tenho muito mais ... mas infelizmente ainda não estou lá ...
Eu tenho python que executa no servidor ...
projecttoomanycooks server [~/public_html/joereddington/wp-content/plugins]#./hello.py
Hello World!
e está no mesmo diretório do plugin ativado ...
O código python ... que tem o seguinte código ...
#!/usr/bin/python
print("Hello World!")
O 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;
}
Respostas:
Você pode usar
popen()
para ler ou gravar em um script Python (isso funciona com qualquer outra linguagem também). Se você precisar de interação (passando variáveis), useproc_open()
.Um exemplo simples para imprimir Hello World! em um plugin do WordPress
Crie o plugin, registre um código curto:
Agora você pode usar esse código curto no editor de postagem com
[python]
ou[python file="filename.py"]
.Coloque os scripts Python que você deseja usar no mesmo diretório que o arquivo de plug-in. Você também pode colocá-los em um diretório e ajustar o caminho no manipulador de códigos curtos.
Agora crie um script Python complexo como este:
E isso é tudo. Use o código curto e obtenha esta saída:
fonte
Eu segui o script de exemplo da primeira resposta, mas não obtive resultados ou erros.
Eu mudei esta linha:
para isso:
e, em seguida, recebeu uma mensagem "permissão negada".
No console, eu corri
atualizou a página e tudo funcionou perfeitamente.
Esse pode ser o problema que Joe estava vendo acima. Não tenho representante suficiente para comentar, desculpe. Espero que isso ajude alguém.
fonte
chmod +x filename.py
vai fazerAqui está um pequeno script que usa
proc_open
como mencionado acima, para enviar uma variável de texto simples para um script python:Adicionados alguns testes na parte inferior para ver se o arquivo python é
rwx
. Eu acho que uma maneira melhor de enviar oargv
seria usando fwrite, mas não estava funcionando para mim após este tutorial .Aqui está o script python que eu usei. Conforme observado nos comentários acima, algo como
#!/usr/bin/env python
pode ser necessário, dependendo do servidor.fonte