PDA

View Full Version : [Python]


kurts
15-11-2009, 23:50
dopo aver letto tutti i commenti positivi riguardanti questo linguaggio mi sono deciso, devo impararlo, in questo modo posso anche concludere il terzetto delle P:
-Pascal
-PHP
-Python

dunque, mi sono scaricato ed installato python 2.5, fatto questo ho installato anche il modulo per apache (2.2), fino qui tutto ok.
creo il file di prova che mi viene suggerito dal sito dove ho trovato la guida:

def index(req):
return "Test successful";

non funge, mi viene mostrata una pagina di informazioni varie, in fondo leggo qualcosa del tipo "indented block expected" o giu di li, a questo punto mi viene in mente che python controlla anche l'indentazione, faccio una prova:

def index(req):
return "Test successful";
ora funziona!! vedo la scritta "Test successful"
a dire il vero non so nemmeno cosa sia "def index(req):" ma sono contento lo stesso, l'installazione è fatta.

facciamo ora la classica "hello world"
print "Hello, World!"


risultato:
Not Found

The requested URL /test.py was not found on this server.

però non capisco, come mai non trova la pagina???
dite che ho cannato l'installazione del modulo python in apache?
beh, tanto per cominciare ho cannato il titolo della discussione! LOL

cdimauro
16-11-2009, 08:49
Devi configurare opportunamente apache. Più precisamente, edita http.conf e assicurati che il plug-in mod_python venga caricato correttamente. Inoltre devi aggiungere un'apposita sezione per indicare ad apache che le richieste relative i file di una certa cartella devono essere girate a mod_python.

kurts
16-11-2009, 09:08
sisi, scusa, mi ero dimenticato di scrivere la parte di configurazione.
ho modificato httpd.conf in questo modo:

all'inizio ho inserito questa riga per fargli caricare il modulo python:
LoadModule python_module "C:/wamp/bin/apache/Apache2.2.11/modules/mod_python.so"

poi più in basso:


<Directory "c:/wamp/www/">

# supporto python
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

</Directory>


temo di essermi dimenticato qualche pezzo di configurazione ma quello che mi lascia più perplesso è il fatto che sembra funzionare "a volte" :what:

vhost87
16-11-2009, 09:14
Devi configurare opportunamente apache. Più precisamente, edita http.conf e assicurati che il plug-in mod_python venga caricato correttamente. Inoltre devi aggiungere un'apposita sezione per indicare ad apache che le richieste relative i file di una certa cartella devono essere girate a mod_python.

Non vorrei dire una stupidata, ma per i file .py in ambito web non andava inserita una intestazione ad inizio sorgente?

cdimauro
16-11-2009, 09:22
sisi, scusa, mi ero dimenticato di scrivere la parte di configurazione.
ho modificato httpd.conf in questo modo:

all'inizio ho inserito questa riga per fargli caricare il modulo python:
LoadModule python_module "C:/wamp/bin/apache/Apache2.2.11/modules/mod_python.so"

poi più in basso:


<Directory "c:/wamp/www/">

# supporto python
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

</Directory>


temo di essermi dimenticato qualche pezzo di configurazione ma quello che mi lascia più perplesso è il fatto che sembra funzionare "a volte" :what:
A naso mi sembra a posto. Comunque ti passo una delle configurazioni che uso io:
<Directory "D:/DocumentRoot/Misc">
PythonPath "['D:/DocumentRoot/Misc']+sys.path"
SetHandler python-program
PythonHandler mod_python.publisher
PythonDebug On
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Non vorrei dire una stupidata, ma per i file .py in ambito web non andava inserita una intestazione ad inizio sorgente?
No, non serve. Ma ovviamente python.exe dev'essere raggiungibile dal path.

kurts
16-11-2009, 09:34
ok, ho creato una nuova sezione in httpd.conf solo per python:
<Directory "c:/wamp/www/python/">
PythonPath "[':/wamp/www/python']+sys.path"
SetHandler python-program
PythonHandler mod_python.publisher
PythonDebug On
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
niente, sempre lo stesso problema...

il path a cui ti riferisci è il sys.path che si vede qui sopra? cosa sta ad indicare?

ora mi viene un altro dubbio, non è che il fatto che sia installato anche php lo infastidisce?

cdimauro
16-11-2009, 09:59
ok, ho creato una nuova sezione in httpd.conf solo per python:
<Directory "c:/wamp/www/python/">
PythonPath "[':/wamp/www/python']+sys.path"
SetHandler python-program
PythonHandler mod_python.publisher
PythonDebug On
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
niente, sempre lo stesso problema...
Azz. Non so che altro suggerirti allora.
il path a cui ti riferisci è il sys.path che si vede qui sopra? cosa sta ad indicare?
Non ricordo in questo momento. Purtroppo questa configurazione l'ho messa a punto parecchio tempo fa, e non ho presente il perché di alcune scelte.
ora mi viene un altro dubbio, non è che il fatto che sia installato anche php lo infastidisce?
No, ho anche PHP installato e caricato, e no interferisce (anche perché non lo uso mai :asd:).

vhost87
16-11-2009, 10:48
No PHP non interferisce.
Ho detto quella cosa dell'intestazione perché anche io avevo un problema simile...

kurts
16-11-2009, 15:08
okok, forse ci siamo!!!
ho seguito un'altra delle tante guide in rete ed ora sembra funzionare!

ho creato questa pagina html:
<html>
<head><title> Mod_python test form</title></head>
<body>
<form action=”form.py/processa” method=”POST”>
Inserisci il tuo nome:<br />
<input type=”text” name=”name”><br />
<input type='submit' name='OK' value=' OK '>
</form>
</body>
</html>

poi anche questa pagina python
def processa(req, name):
if not name:
return "Who are you?"
else:
return "Ciao %s!" % name

risultato? una bestemmia immonda da parte del browser!!
The requested URL /python/â€form.py/processa†was not found on this server.

all'inizio non capivo, poi, avvicinandomi allo schermo ho capito!
avete visto le virgolette?? non sono le solite ("") sono oblique...
ho corretto ed ora funziona come dovrebbe:
Ciao kurts!

cdimauro
17-11-2009, 07:11
Sono contento per te, ma non ho capito il discorso delle virgolette.

kurts
17-11-2009, 12:34
guarda, confronta questi due pezzetti di codice apparentemente uguali:
<html>
<head><title> Mod_python test form</title></head>
<body>
<form action=”form.py/processa” method=”POST”>
Inserisci il tuo nome:<br />
<input type=”text” name=”name”><br />
<input type='submit' name='OK' value=' OK '>
</form>
</body>
</html>

<html>
<head><title> Mod_python test form</title></head>
<body>
<form action="form.py/processa" method="POST">
Inserisci il tuo nome:<br />
<input type="text" name="name"><br />
<input type='submit' name='OK' value=' OK '>
</form>
</body>
</html>

noti la differenza tra ” e " ?
comunque niente da fare, il codice dell'esempio funziona ma basta il semplice "Hello World" per mandarlo nel pallone...
non so più cosa fare

cdimauro
17-11-2009, 13:10
Ah, ho capito adesso. :D

Per l'hello, world, potresti passare l'esatto pezzo di codice che hai usato?

kurts
17-11-2009, 16:07
Per l'hello, world, potresti passare l'esatto pezzo di codice che hai usato?
umh... si, posso.



:mbe:



ah, aspetta, devo anche postarlo??
eccolo:
print("Hello")

era troppo lungo scrivere tutta la frase "Hello, World!" quindi ho accorciato.
risultato:
print("Hello")

ho dato un'occhio si wikipedia e per non correre rischi ho provato anche con la verione:
print "Hello, World!"

risultato:
print "Hello, World!"

insomma, qualsiasi istruzione scrivo lui mi butta sul browser la stessa istruzione senza fare un bel niente

cdimauro
17-11-2009, 18:04
Vuol dire che non sta indirizzando le richieste a mod_python, e visualizza il testo contenuto nel file così com'è.

Il fatto è che non so come aiutarti. Con la configurazione che ho postato prima a me funziona tutto alla perfezione.

kurts
17-11-2009, 19:10
ho cambiato l'handler utilizzato dal mod_python:

<Directory "c:/wamp/www/python">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .psp
PythonHandler mod_python.psp
PythonDebug On
</Directory>

ora devo usare delle pagine .psp che racchiudono il codice python tra i tag <% e %> ma non mi crea problemi, sono abituato al php.

ho provato a fare una paginetta html con dentro un'istruzione python e sembra funzionare:
<html>
<body>
<h1><% req.write("Hello!") %></h1>
</body>
</html>

poi ne ho fatta una con il print ma niente da fare, pagina bianca, il print non gli piace...
che cosa cambia da print a req.write?

vhost87
17-11-2009, 19:14
No ma che cosa brutta...
è strano comunque, come dice cdimauro, la config è giusta.

Quella config è il virtualhost o il file httpd.conf (o apache2.conf, dipene dagli os).?

kurts
17-11-2009, 19:16
inserito direttamente nell'httpd.conf

vhost87
17-11-2009, 19:20
inserito direttamente nell'httpd.conf

Niente... è strana come cosa, molto.
Vado a calcetto, macino e ci penso... :D :D