Re: [Python] OT Soluzione per PDF
Mattia.Baldassarri wrote: > Ciao ragazzi, vorrei un informazione, dovrei programmare per un > cliente uno script per leggere i PDF contenuti in una cartella di rete > e poi metterli insieme e creare un PDF unico, ho la necessita di farlo > con python perché lo devo inserire in un raspberry, chiedevo se è una > cosa fattibile e se qualcuno ha qualche linea guida. > Grazie. Controlla se pdftk è pacchettizzato per raspberry, se devi solo unire dei file penso che sia la soluzione più semplice. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Comunicazione via Telnet.
Gabriele Battaglia wrote: > Salve. > Torno sull'argomento Telnet perchè nel frattempo ho circoscritto un po > il problema. > > Sono dunque sotto Win 7 a 32 Bits, uso Python 2.7.10. > > Apro una connessione Telnet con un server tramite il metodo open() > della classe Telnet del modulo telnetlib. > Scrivo sul canale con ...write(), leggo le singole stringhe con > ...read_eager() oppure tutto il buffer dall'ultima lettura con il > metodo read_very_eager(). > > Premetto che non ho capito la differenza fra read_lazy() e > read_eager() e le loro varianti con _very_, se non che Eager riceve > effettivamente l'output del server, mentre lazy, no. > > La domanda è, come faccio a capire quando c'è qualcosa da leggere nel > buffer? > ... Ti consiglio di provare pexpect: https://pypi.python.org/pypi/pexpect/ -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Problema Mail : Missing required header field: "Date"
Riccardo Brazzale wrote: > Ciao a tutti. > > Premetto che non so se il problema sta dalla parte di python ma ci > provo, non vorrei che bastasse un niente sul codice e il problema > scompare > > Ho questo programma che manda a destra e a manca dei documenti pdf: > > msg = MIMEMultipart() > msg['From'] = mailfrom > msg['To'] = to > msg['Subject'] = subject > part = MIMEBase('application', 'octet-stream') > part.set_payload(open(attach, 'rb').read()) > Encoders.encode_base64(part) > part.add_header('Content-Disposition', >'attachment; filename="%s"' % > os.path.basename(attach)) > testa = text > piede = footer > part1 = MIMEText(testa, 'html') > part2 = MIMEText(piede, 'html') > msg.attach(part) > msg.attach(part1) > msg.attach(part2) > server.sendmail(mailusername, to, msg.as_string()) > server.quit() > > Ho dei rarissimi casi in cui mi torna questo: > > The message WAS NOT relayed to: > > <a...@acme.com <i...@bizeta-macchinehf.it>>: > > 554 5.6.0 bounce, id=24119-12 - bad header > > This nondelivery report was generated by the program amavisd-new at > host > > s2.asws3.com. Our internal reference code for your message is > > 24119-12/qf8Mkr96lFAq > > INVALID HEADER > Missing required header field: "Date" > > Googlando in giro ho trovato che amavisd fa di queste cose ma non ho > trovato un workaround per risolvere tranne quello che il destinatario > debba mettere le mani sulle configurazioni di spamassasin e amavisd. > > Ho qualche speranza? > > Grazie > Hai provato ad aggiungere l'header mancate? msg['Date'] = time.asctime() -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Neofita Python [was Re: Arduino]
Giuseppe Russo wrote: ciao Giovanni grazie per la tua disponibilità. ho in mente grandi idee per il futuro; ma per l’immediato vorrei imparare a gestire una data base. da dove comincio? Giuseppe Russo g-ru...@fastwebnet.it ... http://www.cs.unibo.it/~difelice/dbsi/ N: occhio al top-posting :D -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] CSound.
Gabriele Battaglia wrote: Giorno. C'è qualcuno in lista, che ha esperienza d'uso di questo pacchetto? http://www.csounds.com/ GB. Se ti interessa usare python: http://code.google.com/p/pyo/ è un ottima libreria. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Gollum1 wrote: Ecco il mio problema, a parte che lo script dovrebbe girare, purtroppo, su una macchina winzoz, dovrei analizzare un file CVS, in cui ho solamente un campo data, un campo orario e un numero di telefono. E questo è tutto sommato banale, il problema è che nel momento indicato dalla data e dall'ora presa da un record del file, deve inserire il numero di telefono in un particolare campo di una pagina web (in intranet) e dare il submit della modifica. Dite che è fattibile la cosa o devo trovare altre soluzioni? byez Se la form è stabile e non richiede l'analisi del codice html 'request' è la soluzione più semplice. Se devi fare l'analisi della pagina prova: http://www.crummy.com/software/BeautifulSoup/ Se invece l'interfaccia è generata da javascript hai bisogno di librerie che si interfacciano con il browser tipo questa: http://selenium-python.readthedocs.org/en/latest/ -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Serializzazione di variabili.
Gabriele Battaglia wrote: Il 24 giugno 2014 15:11, Gabriele Battaglia iz4...@libero.it ha scritto: Metti che io arrivi ad un certo punto del flusso del mio programma, con tante variabili dai nomi più fantasiosi. Arrivare ad un certo punto del programma con tante variabili dai nomi fantasiosi e da salvare... secondo me dovrebbe far sorgere il dubbio che sia da rivedere l'impostazione del programma. Può esistere un nome comune per riferirsi a *tutte* queste variabili? Se sì probabilmente hai bisogno di una sola variabile che sia una lista o un dizionario. Non conoscendo il problema che vuoi risolvere non so dirti di più. GB: ciao Daniele, dubbio più che lecito, anzi, certezza. Mi serviva solo capire come salvare più di una variabile con pickle, ma il tuo discorso non fa una piega, in un programma ben strutturato, si salvano oggetti che contengono una gran quantità di dati strutturati. Qui non c'è un vero e proprio problema da risolvere, chiedevo più che altro per chiarirmi le idee sull'uso di pickle e dei suoi metodi, conoscenze da usare poi. Grazie. GB. Non so quanti usino direttamente i pickle per memorizzare gli oggetti. Ti consiglio di guardare ZODB, che usa i pickle ma fornisce anche una serie di funzionalità che semplificano la vita dello sviluppatore: https://pypi.python.org/pypi/ZODB -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] ricaricare da interprete.
Alessandro Balzano wrote: reload(key) dovrebbe fare al caso tuo. Il giorno 20 giugno 2014 11:48, Gabriele Battaglia iz4...@libero.it ha scritto: Buongiorno a tutti. Torno con una domanda basic, non nel senso del linguaggio Basic, ma in quello della sua estrema semplicità. Devo testare una funzione che sto scrivendo, mettiamo che la funzione si chiami key() e stia dentro al file key.py Voglio testarla da interprete. from key import key poi faccio i test. A questo punto, modifico la funzione e voglio testare l'effetto delle mie modifiche. Ho provato a ripetere l'import ma sembra non aggiornare niente. Ho provato ad usare del key e poi a reimportare ma sembra che mi carichi la versione vecchia. How to do? Grazie. Per cose semplici il reload va benissimo, ma se devi fare i test in shell tanto vale che usi direttamente gli unittest. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Problema con sito https
Pietro Battiston wrote: Salve a tutti, è da un po' che sbatto la testa contro questo problema: import urllib2 urllib2.urlopen('https://www.u-gov.sssup.it') [... lungo traceback ...] URLError: urlopen error [Errno 1] _ssl.c:504: error:140773E8:SSL routines:SSL23_GET_SERVER_HELLO:reason(1000) Succede sia con urllib2 che con il fork di urllib2 che mechanize ingloba. ... se quelle sono le uniche due righe e subito parte l'errore hai un problema di tipo diverso, a me da questo: import urllib2 x = urllib2.urlopen('https://www.u-gov.sssup.it') x.read() 'html\nhead\nmeta http-equiv=refresh content=0;url=https://www.u-gov.sssup.it/sssup/;\ntitleU-GOV/title \n/head\nbody\n/body\n/html\n' non è che ti manca qualche libreria di sistema o pyhton non è compilato con il supporto ssl? Pochissima di esperienza ed un po' più di ricerca su google mi hanno spinto a pensare che fosse un problema con il certificato SSL non trusted, e a fare monkey patching di urllib2 e di ssl come se non ci fosse un domani... ma invece pare che proprio la comunicazione SSL non parta nemmeno se impongo di non fare il check (che peraltro mechanize di default fa, ma urllib2 mi pare ancora di no). Ho provato sia in una debian testing che in una Ubuntu ben più datata, non cambia niente. Ovviamente, la cosa che non capisco è che invece in un browser si apre perfettamente. Qualsiasi illuminazione sarà illuminante! Grazie, Pietro -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Problema con sito https
Dario Bertini wrote: Riccardo, curioso che a te funzioni: leggi il mio messaggio, che spiega il problema forse a te funziona perchè hai una versione diversa di openssl? puoi darci l'output di python -c import ssl; print(ssl.OPENSSL_VERSION) e di curl -v 'https://www.u-gov.sssup.it' ? Certo, ecco qua: $ python -c import ssl; print(ssl.OPENSSL_VERSION) Traceback (most recent call last): File string, line 1, in module AttributeError: 'module' object has no attribute 'OPENSSL_VERSION' Questo è un python 2.6.5: interessante :D Con un python 2.7 compilato da me: $ /opt/python-2.7.2/bin/python -c import ssl; print(ssl.OPENSSL_VERSION) OpenSSL 0.9.8k 25 Mar 2009 e funziona ancora il codice sopra mentre con un python 3.1 (sempre compilato da me, sullo stessa macchina degli altri due interpreti: import urllib.request as urllib2 x=urllib2.urlopen('https://www.u-gov.sssup.it') Traceback (most recent call last): File /opt/python-3.1.1/lib/python3.2/urllib/request.py, line 1136, in do_open h.request(req.get_method(), req.selector, req.data, headers) File /opt/python-3.1.1/lib/python3.2/http/client.py, line 964, in request self._send_request(method, url, body, headers) File /opt/python-3.1.1/lib/python3.2/http/client.py, line 1002, in _send_request self.endheaders(body) File /opt/python-3.1.1/lib/python3.2/http/client.py, line 960, in endheaders self._send_output(message_body) File /opt/python-3.1.1/lib/python3.2/http/client.py, line 805, in _send_output self.send(msg) File /opt/python-3.1.1/lib/python3.2/http/client.py, line 743, in send self.connect() File /opt/python-3.1.1/lib/python3.2/http/client.py, line 1105, in connect server_hostname=server_hostname) File /opt/python-3.1.1/lib/python3.2/ssl.py, line 179, in wrap_socket _context=self) File /opt/python-3.1.1/lib/python3.2/ssl.py, line 266, in __init__ raise x File /opt/python-3.1.1/lib/python3.2/ssl.py, line 262, in __init__ self.do_handshake() File /opt/python-3.1.1/lib/python3.2/ssl.py, line 441, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [Errno 1] _ssl.c:392: error:14077417:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert illegal parameter e il curl: $ curl -v 'https://www.u-gov.sssup.it' * About to connect() to www.u-gov.sssup.it port 443 (#0) * Trying 193.205.80.7... connected * Connected to www.u-gov.sssup.it (193.205.80.7) port 443 (#0) * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs * SSLv3, TLS handshake, Client hello (1): * error:14077417:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert illegal parameter * Closing connection #0 curl: (35) error:14077417:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert illegal parameter -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Problema con sito https
Dario Bertini wrote: uh, curioso O_o immagino che il tuo python3 sia linkato con la stessa versione di OpenSSL, giusto? Si, è la libreria di sistema. $ /opt/python-3.1.1/bin/python3 -c import ssl; print(ssl.OPENSSL_VERSION) OpenSSL 0.9.8k 25 Mar 2009 -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] alternative ad eval
Balan Victor wrote: Siccome a naso quello che vuoi fare e' un semplice expression language, hai comunque bisogno, a mio avviso di un vero parser. Davvero, e' roba facile da scrivere, una volta che usi la libreria giusta, e' piu' robusto e quando si spacca si capisce meglio perche'. quindi pyparsing? Facili da scrivere ... se uno ha basi solide sull'argomento. Io che, a parte un po su wikipedia, sono completamente ignorante nella materia mi trovo un po spaesato XD ora cmq provo a vedere se riesco a creare qualcosina con pyparsing. Alcune librerie ci sono, ad esempio: https://pypi.python.org/pypi/RestrictedPython ce ne sono anche altre: cerca restricted python su pypi. Ho dato un'occhiata e, anche se fosse sicuro al 100%, non mi risolve il secondo problema: ossia evitare operazioni del tipo 1 * 10. Come ho scritto nel primo post gli utenti che generano queste stringhe sono solo utenti autorizzati. Quindi è difficile che facciano cose stupide. E' molto più facile che commettano errori che possano saturare la macchina... Allora qesta libreria mi pare più adatta: https://pypi.python.org/pypi/simpleeval ma tieni conto che (per quello che mi ricordo da Informatica II) quel tipo di problemi dovrebbe far parte della categoria degli 'indecidibili' quindi ammesso che il problema sia risolvibile si deve comunque usare un linguaggio con un domino ridotto (in modo che non sia idempotente con la macchina di Turing), da cui la necessità usare una grammatica adeguata. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] alternative ad eval
Balan Victor wrote: Ho un array di tuple cosi formate da 3 elementi: (int|float|boolean|string|datetime|..., string, boolean). Es: [ (10, value = 1, True), (Ciao, o in value, True), (True, value == False, False), (92.5f, value = 92.0f, True), ] Il primo elemento della tupla può essere qualunque tipo o classe di python. Il secondo elemento è una espressione da applicare sulla tupla e che deve restituire True or False(value si riferisce al primo elemento della tupa) Il terzo elemento è il risultato dell'operazione appena sopra. A intervalli regolari ho bisogno di scorrere l'array sopra e aggiornare il valore del terzo elemento. Ho pensato di usare eval in questo modo: def check_status(value, eval_string): rc = eval(eval_string) if rc is not bool: raise WrongEvalString() return rc Conosco i rischi di eval e vorrei evitare di usarlo però non riesco a trovare nulla di altrettanto semplice e con le stesse potenzialità. NB: In realtà la stringa che fa la validazione può essere impostata solo da qualcuno di autorizzato quindi il rischio che mi cancelli tutto il fs non ci dovrebbe essere, e non dovrebbero nemmeno fare operazioni del tipo value ** value però in ogni caso vorrei trovare qualcosa che mi metta al sicuro da questo tipo di operazioni. grazie Alcune librerie ci sono, ad esempio: https://pypi.python.org/pypi/RestrictedPython ce ne sono anche altre: cerca restricted python su pypi. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Gestione delle uscite audio
Amedeo Milella wrote: Ciao. Io sviluppo su Ubuntu 13.10 con Python3.3. Vorrei sviluppare un software per esame audiometrico quindi ho bisogno di mandare un segnale indipendente L - R aud una cuffia e contemporaneamente un segnale indipendente ad un dispositivo vibrante posto dietro l'orecchio. Non sono sicuro a che tipo di uscite devo collegarmi (non ho ancora visionato i modelli cuffia/vibratore) ma presumo: uscita jack per la cuffia ed eventualmente USB per il vibratore ... Data la semplicità degli use case forse anche pygame è sufficiente: http://pygame.org/news.html per cose complesse consiglio pyo, oltre ad avere molte funzioni avanzate per trattare i segnali audio permette di generare anche delle semplici interfacce: https://code.google.com/p/pyo/ eventualmente puoi usare jackd se ci sono necessità di realtime (sotto linux, per altre piattaforme non ho idea). -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Pyo.
Gabriele Battaglia wrote: Ciao. Sapete se esiste qualcosa da leggere su Pyo, in italiano? Sto provando col suo tutorial online, l'inglese è solo una delle difficoltà... Mi sembra un po complessa anche la spiegazione delle classi e del loro utilizzo e così.. beh, mi chiedevo se magari qualcun altro a parte l'autore, avesse scritto e pubblicato qualcosa. Grazie. GB. In italiano sono sicuro che non c'è nulla (a proposito talk al pycon su pyo può interessare?) ma la documentazione è ben fatta e c'è una cartella con molti esempi da cui partire. Un esempio https://soundcloud.com/axaroth/damned-chorus generato con pyo. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Il dilemma degli array mutabili
Piergiuliano Bossi wrote: 2013/9/18 Riccardo Lemmi ricca...@reflab.com Mi sfugge il caso, forse un esempio chiarirebbe... L'unico posto in cui vedo male il codice messo sopra è quello in cui si usano gli elementi dell'array non in sequenza ma pescando in qua e la' Ho visto la luce. Questo e' il codice che ha causato il thread (semplificato, ovviamente); def evaluate(list): return sum(v for v in list if v % 2 == 0) def _subtract(list1, list2): result = list1[:] for val in list2: result.remove(val) return result Manca un check prima di fare il remove. Alternativamente la scriverei così: def _subtract(list1, list2): result = [] for val in list2: if val not in list2: result.append(val) return result ma se non ci sono ridondanze nelle due liste cioè stai effettivamento implementando la differenza fra insiemi: result = set(list1) - set(list2) o result = set(list1).difference(list2) def useless(list): useful = list[:] for val in list: useful.remove(val) if evaluate(useful) != evaluate(list): useful.append(val) return _subtract(list, useful) if __name__ == __main__: print(useless([]))# = [] print(useless([1, 2, 3, 5, 8]))# = [1, 3, 5] Codice abbastanza orrido, no? L'idea e' calcolare gli elementi di una lista che non contribuiscono al valore determinato da una certa funzione. Diciamo che evaluate in realta' e' molto piu' complessa (non computazionalmente, ma matematicamente non e' semplice), che e' insensibile all'ordine degli elementi nella lista (da cui l'uso di remove non posizionale) e che ovviamente questo codice non e' ottimizzato (eg: e' inutile chiamare evaluate(list) ogni volta nel ciclo). detto così sembra proprio che tu stia lavorando con i set... L'ho riscritto senza copy.copy ma con [:] e ovviamente tutto bene, ma non e' un gran guadagno. Poi ho provato a fare una comprehension che fa tutto al volo e mi e' venuta al primo colpo: def useless(list): return [list[i] for i in range(len(list)) if evaluate(list[:i] + list[i+1:]) == evaluate(list)] Oserei dire che e' persino un pelo piu' comunicativa cosi', visto che non devo calcolare una lista e poi sottrarla all'altra. Mi sento come se avessi trovato il barattolo di nutella di Moretti, un cucchiaione e nessuno attorno... :) Ciao Giuliano PS: queste sono le cose che fanno scattare l'aore... -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Il dilemma degli array mutabili
Piergiuliano Bossi wrote: Un'altra cosa che mi spiazza e' la seguente: sono abituato a manipolare e trasformare array immutabili, in cui ogni trasformazione ti ritorna una copia dell'array di partenza, per cui ci puoi fare le piu' immani schifezze senza effetti collaterali. ... Crei la nuova lista leggendo da quella vecchia: newl = [] for i in oldl: newl.append(applica_shifezze_varie_su(i)) (stessa cosa con le comprehension) In Python le liste sono mutabili e c'e' ben poco che si possa fare senza mutarle manipolandole, per cui in un metodo che riceve una lista in ingresso mi sono trovato spesso a copiarle in una variabile locale prima di lavorarci sopra: import copy def yada(foo): bar = copy.copy(foo) # ecc. Usare un array.array non cambia le cose di fatto, introducendo tutta un'altra categoria di limitazioni. Le tuple sono immutabili, ma non funzionano nel senso che ho spiegato sopra (si', lo so, per la append potrei creare una nuova tupla e passarle in ingresso una lista concatenata della vecchia tupla e del nuovo elemento, ma non mi sembra il modo in cui il BDFL le ha intese). Per cui la mia domanda e', quando volete manipolare strutture tipo array senza mutarle o mutandole in copia: 1) le copiate all'inizio come dicevo sopra 2) non usate liste, ma tuple, ma poi come compensate la mancanza di append e remove (sembra una contraddizione in termini ma non lo e', basterebbe che append e remove ritornino nuove strutture dati, copie dell'originale) 3) vi toccate (cit) Ho come la sensazione che Marco dira': usa una comprehension, che non e' una cattiva idea, ci mancherebbe, ma le comprehension mal si prestano quando l'algoritmo che stai implementando e' modellato su append() e remove() o sbaglio? Grazie e ciao Giuliano Mi sfugge il caso, forse un esempio chiarirebbe... L'unico posto in cui vedo male il codice messo sopra è quello in cui si usano gli elementi dell'array non in sequenza ma pescando in qua e la' -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Rasterizzare un layer vettoriale usando la libreria GDAL
Maurizio Minissale wrote: Perdona l'ignoranza ma cosa intendi per canale #gdal? Il canale irc su freenode, ma va bene anche la mailing list. Trovi i riferimenti nella homepage: http://www.gdal.org/ -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Rasterizzare un layer vettoriale usando la libreria GDAL
Maurizio Minissale wrote: Ciao a tutti, quello che sto cercando di fare è ottenere un layer raster partendo da un vettoriale. Più precisamente ho un vettoriale contenente poligoni e vorrei rasterizzare l'informazione di uno specifico campo, ovvero il campo 'Index' (che ho aggiunto al layer vettoriale originale) contenente valori interi compresi tra 0 e 9. Ho utilizzato l'istruzione: err = gdal.RasterizeLayer(target_ds, (3,2,1), source_layer, burn_values=(0,0,0), options=[ATTRIBUTE= Index]) che effettua la rasterizzazione partendo da un DEM (target_ds) target, ma mi ritrovo una matrice piena di 0 e non i valori del campo. Qualcuno ha qualche suggerimento in merito? Purtroppo la documentazione a riguardo non è molto chiara... Grazie in anticipo, Maurizio. Questo potrebbe rispondere in parte alla tua domanda: http://stackoverflow.com/questions/2220749/rasterizing-a-gdal-layer quoto: you have to make the source and destination extents match or everything is clipped out. Sul canale irc #gdal ti possono dare una indicazione migliore sulle cose da controllare. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Rasterizzare un layer vettoriale usando la libreria GDAL
Maurizio Minissale wrote: Grazie innanzitutto per la risposta Riccardo, effettivamente mi sto basando su quanto riportato nel link che mi hai postato . Praticamente ho eseguito le operazioni riportate nella risposta di stackoverflow con le modifiche del mio caso specifico (aggiungendo il campo 'Index' allo shp). Il tuo quoto: you have to make the source and destination extents match or everything is clipped out. potrebbe essere la risposta...infatti il risultato da me ottenuto non coincide con il DEM target, ma piuttosto con gli extents del layer vettoriale, che passo come nell'esempio da te citato. Come suggerisci di procedere? Maurizio Su stackoverflow c'è un esempio funzionante. Se non fa al caso tuo l'opzione migliore rimane il canale #gdal. Il giorno 15 gennaio 2013 15:05, python-requ...@lists.python.it ha scritto: ... Maurizio Minissale wrote: Ciao a tutti, quello che sto cercando di fare è ottenere un layer raster partendo da un vettoriale. Più precisamente ho un vettoriale contenente poligoni e vorrei rasterizzare l'informazione di uno specifico campo, ovvero il campo 'Index' (che ho aggiunto al layer vettoriale originale) contenente valori interi compresi tra 0 e 9. Ho utilizzato l'istruzione: err = gdal.RasterizeLayer(target_ds, (3,2,1), source_layer, burn_values=(0,0,0), options=[ATTRIBUTE= Index]) che effettua la rasterizzazione partendo da un DEM (target_ds) target, ma mi ritrovo una matrice piena di 0 e non i valori del campo. Qualcuno ha qualche suggerimento in merito? Purtroppo la documentazione a riguardo non è molto chiara... Grazie in anticipo, Maurizio. Questo potrebbe rispondere in parte alla tua domanda: http://stackoverflow.com/questions/2220749/rasterizing-a-gdal-layer quoto: you have to make the source and destination extents match or everything is clipped out. Sul canale irc #gdal ti possono dare una indicazione migliore sulle cose da controllare. -- Riccardo Lemmi -- Message: 2 Date: Tue, 15 Jan 2013 12:23:29 +0100 From: Giovanni Porcari giovanni.porc...@softwell.it To: python@lists.python.it Subject: [Python] [OT] Trello Message-ID: 1fafd885-ec07-4d44-baf8-a35fc896d...@softwell.it Content-Type: text/plain; charset=iso-8859-1 Ho da poco conosciuto Trello (www.trello.com) e me ne sono innamorato. Per gestire progetti complessi o anche solo per organizzarsi la vita è una meraviglia. Il fatto che sia gratuito lo rende perfetto. Un grazie a Giovanni Bajo che me lo ha fatto conoscere. G -- Message: 3 Date: Tue, 15 Jan 2013 14:23:37 +0100 From: Andrea Ambu andrea...@gmail.com To: Discussioni generali sul linguaggio Python python@lists.python.it Subject: [Python] [django] max_age cache control dinamico Message-ID: cafcbtovrko+x2-ry2vrwjr_czvznp9ccclqy8txkccl5j8s...@mail.gmail.com Content-Type: text/plain; charset=iso-8859-1 Ciao! Dunque si puo` facilmente controllare la max_age per una view cosi`: from django.views.decorators.cache import cache_control @cache_control(max_age=3600) def my_view(request): # ... Ma se volessi che il valore di max_age venga deciso _dentro_ my_view come posso fare? Per esempio: def my_view(request): if is_good_to_keep_in_cache_for_a_bit(request): # set max_age to 36000 else: # set max_age to 42 # ... Cheers, Andrea -- parte successiva -- Un allegato HTML è stato rimosso... URL: http://lists.python.it/pipermail/python/attachments/20130115/3dc0a2ed/attachment-0001.html -- Message: 4 Date: Tue, 15 Jan 2013 14:40:50 +0100 From: Marco Beri marcob...@gmail.com To: Andrea Ambu andrea...@gmail.com, Discussioni generali sul linguaggio Python python@lists.python.it Subject: Re: [Python] [django] max_age cache control dinamico Message-ID: CAN1J36jHAW4x-kB= lu2fr_9yaemycniozzu33iy41ucafvp...@mail.gmail.com Content-Type: text/plain; charset=utf-8 On Tue, Jan 15, 2013 at 2:23 PM, Andrea Ambu andrea...@gmail.com wrote: Ciao! Dunque si puo` facilmente controllare la max_age per una view cosi`: from django.views.decorators.cache import cache_control @cache_control(max_age=3600) def my_view(request): # ... Ma se volessi che il valore di max_age venga deciso _dentro_ my_view come posso fare? Per esempio: def my_view(request): if is_good_to_keep_in_cache_for_a_bit(request): # set max_age to 36000 else: # set max_age to 42 # ... Boh, potresti importare patch_cache_control da django.utils.cache.py e fare: response = patch_cache_control(response, max_age=quello che vuoi) Oppure provare a passare una property come valore di max_age. Entrambe idee non provate: lascio al lettore l'onere
Re: [Python] lanciare programma senza far comparire la shell
Matteo Perini wrote: A differenza di Windows, su Linux dovrebbe avvenire naturalmente. Casomai la shell viene aperta dal sistema che usi per lanciarlo. Come lanci il programma? Grazie della risposta... All'avvio del pc faccio partire un comando: gnome-terminal -e python /home/matteo/Scrivania/prova.py --working-directory=/home/matteo/Scrivania/ o, se per caso va in crash, ho un lanciatore sul desktop con la stessa dicitura. Il file prova.py mi lancia il programma vero e proprio con il codice: #!/usr/bin/env python import subprocess subprocess.call(['python','programm.pyc']) Immagino che a questo punto stiate ridendo... mi rendo conto da solo dell'accrocchio che ho messo in piedi ed è per questo che vi chiedo aiuto. Come posso lanciare un programma .py o .pyc in modo efficiente e comodo. Ciao e grazie MAtteo Metti come prima riga dello script: #!/usr/bin/env python o il path al python che vuoi usare e con chmod rendi eseguibile lo script, a questo punto dovresti essere in grado di lanciarlo direttamente. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] django e strutture dati permanenti
Riccardo Lemmi wrote: Balan Victor wrote: idee? :) Il giorno 10 ottobre 2012 14:01, Balan Victor balan.vict...@gmail.com ha scritto: quello che devo fare è questo: in fase di inizializzazione devo caricare in memoria un grafo(networkx) di dimensioni consistenti: 60.000 nodi e più di 100.000 connessioni. PER ADESSO dovrebbe essere in sola lettura e se devo fare delle modifiche posso permettermi di stoppare tutto, fare le modifiche e rilanciare l'applicazione. Poi in base alle richieste che vengono effettuate devo andare a leggere le informazioni che mi servono dal grafo, elaborarle e restituirle all'utente. ... Non sarebbe meglio fare il pickle della struttura dati creata in memoria da networkx invece di ricreare il grafo ogni volta dal DB? Ovviamente perchè sia fattibile bisogna controllare che gli oggetti di NetworkX siano effettivamente serializzabili, inoltre tenere allineati il DB e il grafo richiede sicuramente del codice specifico per evitare di buttare via tutto e ricreare da 0 ogni volta che cambia qualcosa. Potrei anche arrivare a suggerire di provare a derivare (o patchare) le classi di NetworxX da Persistent dello ZODB per semplificare la serializzazione ed eliminare il DB relazionale... Una prova fatta velocemente, ma sembra funzionare. # store a networkx graph in a ZODB # depends on # networkx # matplotlib # ZODB3 import sys import networkx as nx import matplotlib.pyplot as plt from persistent import Persistent from persistent.list import PersistentList from persistent.dict import PersistentDict from ZODB import FileStorage, DB import transaction # root = None storage = None db = None connection = None def init_db(): global root, storage, db, connection if root is None: storage = FileStorage.FileStorage('./g1.fs') db = DB(storage) connection = db.open() root = connection.root() # class PersistentGraph(Persistent, nx.Graph): def __init__(self, data=None, **attr): nx.Graph.__init__(self, data=None, **attr) self.graph = PersistentDict() # dictionary for graph attributes self.node = PersistentDict()# empty node dict (created before convert) self.adj = PersistentDict() # empty adjacency dict class Person(Persistent): def __init__(self, name): self.name = name def __repr__(self): return Person: %s%(self.name) # if __name__ == '__main__': init_db() if G not in root.keys(): print Adding some Person(s) G = root[G] = PersistentGraph() f = Person(Father) m = Person(Mother) c = Person(Child) G.add_edge(f, c) G.add_edge(m,c) transaction.commit() else: G = root[G] if 'addWN' in sys.argv: print Adding wife and son of Child # these are not permanents until commit w = Person(Wife) n = Person(Nephew) c = [p for p in G.nodes() if p.name==Child][0] # can be done better G.add_edge(n, w) G.add_edge(n, c) transaction.commit() if 'rmW' in sys.argv: res = [p for p in G.nodes() if p.name==Wife][0] if len(res)0: print Removing Wife G.remove_node(res[0]) transaction.commit() print Showing for n in G: print n nx.draw(G) plt.show() -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] django e strutture dati permanenti
Balan Victor wrote: idee? :) Il giorno 10 ottobre 2012 14:01, Balan Victor balan.vict...@gmail.com ha scritto: quello che devo fare è questo: in fase di inizializzazione devo caricare in memoria un grafo(networkx) di dimensioni consistenti: 60.000 nodi e più di 100.000 connessioni. PER ADESSO dovrebbe essere in sola lettura e se devo fare delle modifiche posso permettermi di stoppare tutto, fare le modifiche e rilanciare l'applicazione. Poi in base alle richieste che vengono effettuate devo andare a leggere le informazioni che mi servono dal grafo, elaborarle e restituirle all'utente. ... Non sarebbe meglio fare il pickle della struttura dati creata in memoria da networkx invece di ricreare il grafo ogni volta dal DB? Ovviamente perchè sia fattibile bisogna controllare che gli oggetti di NetworkX siano effettivamente serializzabili, inoltre tenere allineati il DB e il grafo richiede sicuramente del codice specifico per evitare di buttare via tutto e ricreare da 0 ogni volta che cambia qualcosa. Potrei anche arrivare a suggerire di provare a derivare (o patchare) le classi di NetworxX da Persistent dello ZODB per semplificare la serializzazione ed eliminare il DB relazionale... -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] richiesta di info su python
Giovanni Porcari wrote: Il giorno 27/giu/2012, alle ore 10:59, Marco Beri ha scritto: 2012/6/27 Giovanni Porcari giovanni.porc...@softwell.it Come modestissima osservazione vorrei aggiungere che nel 2012 un'alternativa possibile in un grandissimo numero di casi è un'interfaccia web. Ovvero ti scrivi il codice lato server e per l'interfaccia utilizzi html5. Il vantaggio è che ti trovi la multiutenza da subito e impari tecniche spendibili anche al di fuori di un ambito python. Ottima osservazione! Non dimenticando inoltre che l'HTML5 permette anche di funzionare in offline, quindi staccato dal web. Ciao. Marco. P.S. Con un (bel) po' di attenzione da prestare all'application cache e quant'altro: http://www.alistapart.com/articles/application-cache-is-a-douchebag/ Ecco, sul fatto di lavorare offline ti confesso che non ci ho mai creduto. Mi spiego: se lavorare significa accedere ad un database (e per me che vivo di gestionali è un assioma) non è che una copia locale mi serva molto. Ma forse ho una visione non abbastanza ampia del problema... G Ci sono alcune situazioni in cui l'offline è necessario o parte della soluzione. Nel link sopra vengono citati wikipedia e google docs, io posso aggiungere la raccolta di dati in generale: survey, report, cataloghi e ordini. Chiaramente ad un certo punto la connessione per potersi sincronizzazione con il DB ci vuole. Queste applicazioni sono tipicamente implementate usando applicazioni native ma oggi si riesce (con qualche difficoltà) ad implementarle come webapp. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] richiesta di info su python
Marco Beri wrote: 2012/6/27 Carlos Catucci carlos.catu...@gmail.com Queste applicazioni sono tipicamente implementate usando applicazioni native ma oggi si riesce (con qualche difficoltà) ad implementarle come webapp. Al momento attuale, salvo non esistano tecniche di cui non sono ancora a conoscenza, cosa possibilissima, mi sembra che siano ancora non abbastanza affidabili. Se mi si cancella un catalogo pazienza, se mi si cancellano ordini non acora inviati magari mi incavolo un attimo se sono un agente di vendita. La nostra applicazione è in produzione da un annetto e, visto che gli agenti del nostro cliente sono pagati a provvigioni, posso essere ragionevolmente certo che non si siano persi ordini :-) Ciao. Marco. Concordo, webapp simile stessa esperienza: devi esplicitamente cancellare la cache per perdere i dati. Semmai i problemi stanno nelle difficoltà di capire quando sei online e gestire eventuali problemi di connessione, in modo da non cancellare cose che non sono già state effettivamente inviate al server... e qui il javascript e le sue implementazioni non sono molto di aiuto :) -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] richiesta di info su python
Carlos Catucci wrote: Concordo, webapp simile stessa esperienza: devi esplicitamente cancellare la cache per perdere i dati. Non sottovalutiamo pero' i nostri cari ed affezionati utenti, che se possono fare danni non ci pensano su un attimo. Semmai i problemi stanno nelle difficoltà di capire quando sei online In effetti pingare ogni tot secondi per vedere se il server risponde non lo trovo il sistema piu' efficiente possibile. e gestire eventuali problemi di connessione, in modo da non cancellare cose che non sono già state effettivamente inviate al server... Questo gia' piu' lineare, una serie di appositi flag e conferme esplicite (ti mando dati e quando hai finito mi rimandi i checksum degli stessi, ad esempio) sono di aiuto. Ribadisco il problema dei Blob pero'. Sopratutto su certi device non e' possibile salvare su disco i dati per potr fare un accesso locale. Per cui le immagini possono essere fastidiose. Carlos Aspettando che File API CO siano implementate decentemente su tutti i browser si può sempre barare usando phonegap sulle piattaforme 'mobili' -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] richiesta di info su python
Carlos Catucci wrote: Aspettando che File API CO siano implementate decentemente su tutti i browser si può sempre barare usando phonegap sulle piattaforme 'mobili' Si anche quella e' una strada. Qualcuno ha esperienze in merito da condividere? Carlos Stiamo andando un po' OT comunque Phonegap copre gli standard html5 dove il browser widget della piattaforma target è mancante rendendo quindi omogeneo lo sviluppo multi-piattaforma. Le cose che fa le fa bene, i limiti non sono di phonegap ma delle applicazioni web: accellerazione 2D/3D, suono e nel caso delle gesture non sempre le risposte sono fluide (dipende molto dalla libreria utilizzata). Il ciclo sviluppo/rilascio su ios è un delirio ma vale anche per le app native, per questo motivo preferirei avere una vera webapp. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Python e Arduino
giorgio wrote: Ciao a tutti, qualcuno ha già provato a leggere/scrivere gli I/O di Arduino? Ci sono un paio di librerie per dialogare usando Firmata, se no puoi impostare uno sketch in modo che prenda comandi tramite la seriale: http://arduino.cc/playground/Interfacing/Python -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Modulo argparse
Walter Valenti wrote: marcob@pc-beruntu:~/work/python$ python arg.py -v usage: arg.py [-h] [-v] PATH arg.py: error: too few arguments marcob@pc-beruntu:~/work/python$ python arg.py usage: arg.py [-h] [-v] PATH arg.py: error: too few arguments A me pare che non funzioni anche senza argomenti... Se stampi l'help vedi che l'argomento PATH, in quanto posizionale, è obbligatorio: marcob@pc-beruntu:~/work/python$ python arg.py -h usage: arg.py [-h] [-v] PATH positional arguments: PATH optional arguments: -h, --help show this help message and exit -v versione Ciao. Marco. Quello che vorrei fare è il seguente comando -v -- mi stampa la versione comando path -- esegue In tutti gli altri casi visualizza l'help. E' poì che cerco nella documentazione ma non riesco a venirne a capo. Walter Prova: parser.add_argument(strings, metavar=PATH, type=unicode, default=, nargs='*') -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Virtualenv vs. buildout
Alessandro Dentella wrote: Ciao, ho appena cominciato a lavorare per un progetto django che ha molti siti web ed una miriade di piccole applicazioni. Al momento non usa alcuno strumento per il deploy, applicazioni anche semplici richiedono molta pazienza per essere messe in produzione. Sto guardando quali strumenti siamo i migliori, per intenderci qui non si sta usando neanche pip install -r... In passato ho usato normalmente virtualenv ma vorrei analizzare anche buildout. Ho letto un po' di documentazione del sito e di Jacob Kaplan-Moss e visto qualche video. Mi piacerebbe avere anche qualche parere da chi li usa entrambi prima di sposare una delle due soluzioni. sandro *:-) Non ho esperienza nell'uso di virtualenv come sistema di deployment ma quello che posso dire, sulla base dalla mia esperienza su entrambi, è che non mi pare che virtualenv possa essere usato in questo modo. zc.buildout mette a disposizione strumenti per fare un deployment replicabile e versionabile che virtualenv non ha (almeno di default). Probabimente l'unica similarità tra i due è la creazione di un ambiente isolato. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Virtualenv vs. buildout
Alan Franzoni wrote: On 03/23/2012 11:27 AM, Alessandro Dentella wrote: ... Detto questo: zc.buildout, IMHO, è ancora acerbo e pure un po' stronzo. Ogni tanto di dà degli errori la cui utilità è pari a quella di un buco in testa ( tipo AssertionError: path /hello/world contains / ), tende (o tendeva, è un po' di mesi che non lo uso) a rompersi con aggiornamenti di librerie o dello stesso pacchetto zc.buildout, e non è proprio semplice da capire, perlomeno all'inizio. Ma una parte di questi problemi sono legati proprio al dependency management su Python, che fa parecchio schifo. buildout.dumppickedversions è lo strumento che permette di dumpare la versione degli egg utilizzata, con questa recipe non ho più avuto problemi con buildout che si 'rompevano' a causa di un aggiornamento. ... -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Python e html
Nicola Larosa wrote: Marco Beri wrote: Premetto che Drupal è un grande prodotto. Lo è, anche se [nitpicking] è più un progetto che un prodotto. :-) Detto questo, mi sfugge il legame tra Drupal e la schifezza di mischiare codice e presentation. Non c'è, Drupal non commette questi errori. Il thread era passato al PHP name calling, abbandonando il topic iniziale. Come mi sfugge il legame tra Drupal e la bruttezza di PHP. Anche per me non è facile capire come un progetto fatto bene come Drupal possa essere implementato con uno strumento mediocre come PHP. L'unica spiegazione che so darmi è di massa critica. Nonostante sia la terza piattaforma più popolare, dopo Wordpress e Joomla (niente esclamativi per cortesia, sono fuori luogo :-P ), è fatto meglio dei due suddetti, e meglio di Plone, e meglio di tutti gli acerbi CMS basati su Django, grazie anche alla forza dei numeri, oltre ad un'architettura e una comunità attenta alla corretta modularizzazione. http://www.unleashedmind.com/en/blog/sun/the-drupal-crisis Abbiamo perso il web, due volte. Eravamo sul server per primi (dopo Perl, ok, ma contro l'harakiri anche gli dei possono poco ;-) ), e ce lo siamo fatto fregare da PHP, probabilmente per colpa di Jim Fulton, che ci ha fatto perdere un decennio nelle paludi di Zope e Plone. Sul client non siamo mai stati, nessuno ha veramente intaccato il predominio di Javascript. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Digest di Python, Volume 68, Numero 14
Giuseppe Amato wrote: Interessa anche a me la cosa for i,c in enumerate(leggi): if c==a : print i se stessi cercando una parola intera potrei fare: sstr = apici lsstr=len(sstr) for i,c in enumerate(leggi): if c==a and leggi[i:i+lsstr]==sstr : print i Con il codice dovresti esprimere quello che vuoi fare: in questo caso secondo me è fuorviante cercare una 'a' e poi la stringa: sstr = apici lsstr=len(sstr) for i in range(len(leggi)): if leggi[i:i+lsstr]==sstr: print i Ma mi conviene rispetto alle altre due proposte? Qual è la più veloce? Secondo me la versione con le espressioni regolari è la migliore dal punto di vista della comprensibilità, ma non ho fatto un controllo sulla velocità che puoi fare tu usando timeit: http://docs.python.org/library/timeit.html sstr = sa lsstr = len(sstr) pos = leggi.find(sstr) print pos while True: new_pos = leggi.find(sstr, pos+lsstr) if new_pos == -1: break else: pos = new_pos print pos oppure import re expr = re.compile('sa') for e in expr.finditer(leggi): print e.start() -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] matplotlib
Vittorio Zuccala' wrote: Buongiorno a tutti, sto cercando di fare un paio di grafici tramite la libreria in oggetto. Entrambi i grafici (da memorizzare in due files differenti) hanno le stesse ascisse (variabile xx). Se cerco di plottare i due grafici, il secondo mi viene una falsa riga del primo mentre se faccio eseguire solo il secondo viene corretto... Come si vede sotto, i codici per il primo e secondo grafico sono identici cambiano le ordinate che nel primo caso sono data e nel secondo coding ovviamente molto diversi gli uni dagli altri... Come faccio, inoltre a riempire nel secondo caso fino all'asse delle x il grafico? (Stile integrale per intenderci...). Ho provato pylab.fill(xx, coding, 'r') ma il fill viene bellamente ignorato... pylab.title(title) pylab.xlabel('time') pylab.ylabel('light value') pylab.grid(True) pylab.plot(xx,data) savedfile=f+_light pylab.savefig(savedfile) #pylab.show() pylab.title(title) pylab.xlabel('time') pylab.ylabel('presence stored') pylab.grid(True) pylab.plot(xx,coding) savedf=f+_presence pylab.savefig(savedf) #pylab.show() Metti pylab.clf() tra i due grafici. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Selenium 2.0 webdriver api python + tutorial
Balan Victor wrote: Scusate ma non ci salto fuori, soprattutto perché manca la documentazione. Per esempio ho questo script: from selenium import webdriver browser=webdriver.Firefox() browser.get('http://www.google.it') ora voglio vedere tutte le textbox e tutti i bottoni presenti nella pagina, come faccio? grazie Seleniumhq non ti aiuta ad analizzare la pagina, si usa per eseguire nel browser le operazioni che faresti con la tastiera o il mouse. Io di solito faccio in questo modo: - uso Selenium IDE per registrare le azioni (http://seleniumhq.org/projects/ide/) - esporto in python - ri-fattorizzo il codice in modo da avere delle funzioni base riutilizzabili; di solito riscrivo e semplifico anche gli xpath generati Il risultato di Selenium IDE è una cosa del genere: from selenium import selenium import unittest, time, re class Untitled(unittest.TestCase): def setUp(self): self.verificationErrors = [] self.selenium = selenium(localhost, , *chrome, https://addons.mozilla.org/;) self.selenium.start() def test_untitled(self): sel = self.selenium sel.open(/en-US/firefox/addon/selenium-expert-selenium-ide/) sel.click(//div[@id='masthead']/h1/a) sel.wait_for_page_to_load(3) sel.click(ulink=Continue reading ?) sel.wait_for_page_to_load(3) def tearDown(self): self.selenium.stop() self.assertEqual([], self.verificationErrors) if __name__ == __main__: unittest.main() Il giorno 13 maggio 2011 20:03, Balan Victor balan.vict...@gmail.com ha scritto: grazie, è sono tutti link che ho già visitato solo li ho trovati un po complessi per me, per questo mi sono rivolto alla mailing list. Proverò a sforzarmi e vedo cosa riesco a tirare fuori. Ho altra domanda, oltre all'ide disponibile come plugin per Firefox esiste qualche ide che permette di registrare le azioni compiute e generare codice python in automatico? Selenium IDE permette sia di registrare le azioni che esportare i comandi in vari linguaggi tra cui python (options - format). Il giorno 13 maggio 2011 14:49, Riccardo Lemmi ricca...@reflab.com ha scritto: Balan Victor wrote: qualche settimana fa ho aperto una discussione riguardo strumenti per automatizzare operazioni su pagine web. Qualcuno di vuoi mi ha suggerito selenium. Ho provato a vedere il sito, documentazione ecc. Ho visto che c'è la versione 2.0 alias webdriver. Tuttavia non riesco a capire se la nuova versione supporta anche python o solo java e c#. Sul sito ufficiale ho trovato solo riferimenti a java e c#. Inoltre non ho trovato nessuna guida/tutorial/api che descriva meglio il funzionamento di questo software. Qualcuno mi sa aiutare a trovare qualche risorsa? Grazie La libreria per collegarti al Selenium Remote Control: http://pypi.python.org/pypi/selenium La documentazione (minimale) della libreria è qui: http://code.google.com/p/selenium/wiki/PythonBindings ma è meglio se guardi il codice: http://code.google.com/p/selenium/source/browse/#svn%2Ftrunk%2Fpy%2Fselenium I comandi del controller: http://seleniumhq.org/docs/02_selenium_ide.html#selenium-commands-selenese -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Selenium 2.0 webdriver api python + tutorial
Balan Victor wrote: qualche settimana fa ho aperto una discussione riguardo strumenti per automatizzare operazioni su pagine web. Qualcuno di vuoi mi ha suggerito selenium. Ho provato a vedere il sito, documentazione ecc. Ho visto che c'è la versione 2.0 alias webdriver. Tuttavia non riesco a capire se la nuova versione supporta anche python o solo java e c#. Sul sito ufficiale ho trovato solo riferimenti a java e c#. Inoltre non ho trovato nessuna guida/tutorial/api che descriva meglio il funzionamento di questo software. Qualcuno mi sa aiutare a trovare qualche risorsa? Grazie La libreria per collegarti al Selenium Remote Control: http://pypi.python.org/pypi/selenium La documentazione (minimale) della libreria è qui: http://code.google.com/p/selenium/wiki/PythonBindings ma è meglio se guardi il codice: http://code.google.com/p/selenium/source/browse/#svn%2Ftrunk%2Fpy%2Fselenium I comandi del controller: http://seleniumhq.org/docs/02_selenium_ide.html#selenium-commands-selenese -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Aggiornare file pickle
Filadelfo Fiamma wrote: Buongiorno a tutti, Avrei un quesito circa l'utilizzo del modulo pickle. L'obiettivo della mia applicazione è gestire un mini-database di file pickle, una volta che sono stati acquisiti i dati da altre fonti. Studiando il modulo ho individuato due metodi: dump() e load() che mi consentono di salvare su file e di leggere da file gli oggetti in questione. Molto spesso capita di dover salvare un oggetto una seconda volta dopo che è stato aggiornato, e tale scopo rieffettuo il dump(). Mi chiedo se invece sia possibile aggiornare il file pickle, andando dunque a modificare e/o aggiungere solo delle specifiche parti piuttosto che effettuare il dump dell'intero oggetto? Grazie mille Buona giornata FF Ti consiglio di guardare lo ZODB. Fa sicuramente molte cose in più rispetto a quello che ti serve ma puoi prendere spunto da lì per la gestione dei 'salvataggi'. Nello specifico lo ZODB usa pickle per la serializzazione, nel caso di un oggetto composito esegue la serializzazione solo delle parti che sono cambiate; le classi devono derivare dalla classe Persistent per fare in modo che lo ZODB capisca cosa è cambiato e ogni oggetto cambiato viene serializzato separatamente, ma lo ZODB gestisce anche i riferimenti tra gli oggetti in modo che siano sempre validi... meglio se guardi il codice :) -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Strumenti per automatizzare operazioni su pagine web
Marco De Paoli wrote: la documentazione non è propriamente ordinata ad ogni modo se sei interessato a Un esempio più concreto di quello che voglio fare è questo: -vai su www.google.it -cerca l'elemento che si chiama q -inserisci in q python -cerca l'elemento che si chiama btnG -simula un click sull'elemento btnG puoi provare qui http://wwwsearch.sourceforge.net/mechanize/forms.html c'è anche una ML in inglese abbastanza attiva Uso mechanize da un po di tempo e non ho avuto particolari problemi Marco ... Spesso basta un set_trace() nel codice per dare uno sguardo all'oggetto Browser e capire come è fatta la pagina o come recuperare la form che si vuole gestire. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Strumenti per automatizzare operazioni su pagine web
Balan Victor wrote: salve, ho la necessità di automatizzare alcune operazioni su pagine web come login automatici, ricerca di testo, verifica presenza immagini. Probabilmente qualcuno mi suggerirà urllib2, tuttavia urllib prevede anche la conoscenza dei protocolli http, https, gestione cache e cookie ecc. protocolli e operazioni che non conosco abbastanza bene per usare urllib. Io ero in cerca di qualche strumento, libreria o qualunque cosa che mette a disposizione funzioni già pronte e/o da integrare con codice python. Un esempio più concreto di quello che voglio fare è questo: -vai su www.google.it -cerca l'elemento che si chiama q -inserisci in q python -cerca l'elemento che si chiama btnG -simula un click sull'elemento btnG grazie Se devi interagire con la pagina ti serve mechanize oppure selenium: http://pypi.python.org/pypi/mechanize http://pypi.python.org/pypi/selenium selenium lo consiglio se devi testare il sito nel browser, cioè guardare anche come viene renderizzato (o se stai usando il javascript per alcune funzionalità). -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] come rilevare se un file è bloccato
Massimo Capanni wrote: Buongiorno a tutti, ho appena finito di realizzare uno script per l'archiviazione e successiva rinomina/cancellazione di file contenuti in una directory. Fra i vari controlli effettuati che ho imposto allo script prima di eseguire le modifiche ai file, ho pensato che un controllo importante da fare e' se l'i-esimo file da elaborare non sia bloccato da un'altro processo, pero' non mi viene al momento nessuna idea valida per implementare un simile controllo. Conoscete un metodo per risolvere questo problema o esiste gia' qualcosa in dotazione con il linguaggio? grazie massimo In tempi passati ho usato pathutils: http://www.voidspace.org.uk/python/pathutils.html Tieni presente che il lock funziona solo se i programmi che accedono al file usano la stessa tecnica. Su pypi cercando lock file trovi anche altre librerie. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] [NIUBBO] Imparare a scrivere un applicazione web... Django, TurboGears, Zope, mod_wsgi ?
Cesco wrote: Salve, Ho un infarinatura molto ma molto basilare su Python (però se occorre conosco i concetti fondamentali della programmazione a oggetti), ho acquisito una minima familiarità seguendo il videocorso di Marco Beri e leggendo qualche capitolo di Dive Into Python; per ora ho solo scritto piccoli programmini per provare ad imparare ad usare il linguaggio e qualche sua libreria semplice. Mi piacerebbe tanto poter provare a scrivere un programmino Python che giri all'interno pagina web... per capirsi, sul tipo programma in PHP che viene aperto visitando la pagina http://www.esempio.com/index.php Mi basterebbe qualcosa di elementare giusto per capire come si fanno certe cose. Mi sembrava di aver capito che la cosa più simile a quello che cerco io sia mod_wsgi. Secondo voi è un buon punto di partenza, oppure è troppo complicato per un niubbo di python come me? Sarebbe meglio che studiassi Django, Zope, Turbogears o altro? O sarebbe meglio che li lasciassi perdere e studiassi a fondo Python prima di tentare qualunque approccio con un framework? Grazie e ciao Puoi partire con Paste: http://pythonpaste.org/script/ http://pythonpaste.org/deploy/ in particolare il comando 'serve' che gestisce i file di configurazione di Paste Deployment e permette di assemblare semplici applicazioni. Volendo complicare le cose in Python ci sono molti framework: - CherryPy - Pyramid (ex repoze.bfg e pylons) - ... (altri a piacere) - Django - Zope (2, 3, Grok, Plone se serve un CMS) Messi in ordine di difficoltà crescente. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] [NIUBBO] Imparare a scrivere un applicazione web... Django, TurboGears, Zope, mod_wsgi ?
Nicola Larosa wrote: Riccardo Lemmi wrote: Puoi partire con Paste: ... Volendo complicare le cose in Python Non credo che iniziare con Django sia più complicato che con Paste. Togliendo 'tutto' con Paste e 10 righe di codice si ha uno scheletro di applicazione: def app(environ, start_response): start_response('200 OK', [('content-type', 'text/html')]) return ['Hello world!'] if __name__ == '__main__': from paste import httpserver httpserver.serve(app, host='127.0.0.1', port='8080') ci sono molti framework: - CherryPy - Pyramid (ex repoze.bfg e pylons) - ... (altri a piacere) - Django - Zope (2, 3, Grok, Plone se serve un CMS) Messi in ordine di difficoltà crescente. Mi sembra un ordine di completezza di feature, più di difficoltà. Non credo, di nuovo, che Django sia più complicato di CherryPy e di Pyramid. Son d'accordo che Zope e derivati vadano alla fine per entrambi i criteri. ;-) Ma ci sono CMS, blog e altro per Django, che credo sia al momento il framework web Python più usato, per quel che vale. No, io mi riferivo proprio alla difficoltà di maneggiare il framework. CherryPy e Pyramid (la parte che deriva da bfg) non richiedono di avere un backend e in questo senso sono più 'semplici' di Django. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] [NIUBBO] Imparare a scrivere un applicazione web... Django, TurboGears, Zope, mod_wsgi ?
Nicola Larosa wrote: Nicola Larosa wrote: Non credo che iniziare con Django sia più complicato che con Paste. Riccardo Lemmi wrote: Togliendo 'tutto' con Paste e 10 righe di codice si ha uno scheletro di applicazione: [snip codice] Anche con Django sono circa 10 linee, solo che son divise tra file diversi, ed includono la configurazione della URL che hai qui omesso. :-) Continuo a pensare che Paste e CherryPy siano più semplici: le dieci linee di Django presuppongo molte più cose di quelle che presuppongono Paste e CherryPy. Anche in termini del numero di moduli di cui sono composti i vari framework si vede subito che Django ne ha molti di più e quindi richiede uno studio più lungo. Mi sembra un ordine di completezza di feature, più che di difficoltà. Non credo, di nuovo, che Django sia più complicato di CherryPy e di Pyramid. No, io mi riferivo proprio alla difficoltà di maneggiare il framework. CherryPy e Pyramid (la parte che deriva da bfg) non richiedono di avere un backend e in questo senso sono più 'semplici' di Django. Neanche Django richiede di usare l'ORM e l'interfaccia di admin, non farti ingannare dal tutorial. Le uniche parti non eliminabili di Django sono la configurazione delle URL, e le view che ritornano la response. Puoi decidere di non usarlo ma è lì mentre in CherryPy e Pyramid è una scelta usarlo... ma non voglio andare oltre su queste questioni, si rischia di fraintendersi. Io credo che stiamo parlando di cose diverse: io mi riferisco alla semplicità con cui si riesce a padroneggiare il codice del framework non alla velocità con cui si scrive la prima applicazione. Io consiglio di cominciare da Paste o CherryPy perchè si padroneggiano in poco tempo e sono una buona base per affrontare framework più complessi/completi. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Lughezza singolo elemento di una lista annidata
Robertino Ceccherini wrote: Lista = ['ciao!', 1, ['mela', 'pera', 'banana'], [1, 2, 3]] i = 0 while i len(Lista): print len(Lista[i]) i = i + 1 A parte che il codice non è molto pythonico, non tutti gli oggetti hanno 'len'. Lista = ['ciao!', 1, ['mela', 'pera', 'banana'], [1, 2, 3]] for item in Lista: if hasattr(item, '__len__'): print len(item) else: print 0 ci sono anche altri modi di scrivere il codice, dipende dalle 'intenzioni' che vuoi esprimere nel tuo codice. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Un paio di punti aperti tra psycopg e Zope
Daniele Varrazzo wrote: Ciao zopisti, Ciao plonisti, Ciao Redomini, :) avete esperienza con l'interazione tra psycopg2 e Zope? Mi dicono http://psycopg.lighthouseapp.com/projects/62710/tickets/29 che farebbe comodo avere un package specifico per ZPsycopgDA. A me farebbe piacere anche avere qualche test di integrazione di psycopg2 per Zope, visto che ormai il testing del package regolare e' completamente automatizzato a partire dall'sdist. Di Zope so poco purtroppo, quindi un po' di aiuto sarebbe il benvenuto. Qualche dettaglio in piu' (e un microbug da risolvere) e' in questo post http://archives.postgresql.org/psycopg/2011-01/msg00022.php della rediviva ML di psycopg, alla quale vi invito a iscrivervi se vi interessa partecipare. Grazie mille! Penso che gli adapter specifici siano ormai una 'reliquia'. A chi sviluppa in zope o plone consiglio di usare: http://pypi.python.org/pypi/Products.SQLAlchemyDA/ Per quanto riguarda invece i due problemi: Issue #30 Per recuperare il path dell'immagine bisogna importare il package e da lì ricostruire il path. Soluzione alternativa è quella di mettere l'immagine direttamente in ZPsycopgDA. Issue #29 Vedo su pypi che qualcuno ha già fatto l'egg per ZPsycopgDA, dalla data però penso che non sia compatibile con Zope2 12.9 http://pypi.python.org/pypi/psycopg2da/2.0.9 forse l'autore di questo egg potrebbe essere interessato a fare un aggiornamento. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Un paio di punti aperti tra psycopg e Zope
Daniele Varrazzo wrote: On Fri, 14 Jan 2011 11:24:56 +0100, Riccardo Lemmi ricca...@reflab.com wrote: Penso che gli adapter specifici siano ormai una 'reliquia'. A chi sviluppa in zope o plone consiglio di usare: http://pypi.python.org/pypi/Products.SQLAlchemyDA/ Che immagino usi psycopg per conto suo e come un package Python regolare invece di passare per ZPsycopgDA, giusto? Ci sono vari passaggi alla fine dei quale si trova: http://pypi.python.org/pypi/SQLAlchemy/ che usa psycopg2 Per quanto riguarda invece i due problemi: Issue #30 Per recuperare il path dell'immagine bisogna importare il package e da lì ricostruire il path. Soluzione alternativa è quella di mettere l'immagine direttamente in ZPsycopgDA. Mi hanno mandato una patch che ho passato alla mailing list, penso sia completa ma non ho modo di valutarlo. Non sono riuscito a trovarla, io farei un semplice: import os import Shared.DC.ZRDB base = os.path.dirname(Shared.DC.ZRDB.__file__) image = os.path.join(base, 'www','DBAdapterFolder_icon.gif') Issue #29 Vedo su pypi che qualcuno ha già fatto l'egg per ZPsycopgDA, dalla data però penso che non sia compatibile con Zope2 12.9 http://pypi.python.org/pypi/psycopg2da/2.0.9 forse l'autore di questo egg potrebbe essere interessato a fare un aggiornamento. Ah, è Fabio: è anche l'autore dei package Debian per Psycopg. Devo senz'altro contattarlo, anche per altre cose. C'è però questo Pumukel che mi ha scritto (ma in PM, mannaggia) tutta la ricetta della nonna per creare un package con ZopeSkel, PasteScript, zc.buildout, collective.releaser... Non so valutare se il risultato (Products.ZPsycopgDA) sarebbe meglio usabile dagli utenti zope. Il package realizzato da Fabio l'ho solo aperto al volo e sembra uguale all'sdist; non ho diffato per capire che differenza ci sia. A prima occhiata mi sembra che siano cose diverse. Per me il problema principale è che non ho un test di integrazione per capire quando un package, creato automaticamente, funziona come deve nelle diverse versioni di zope. Ce l'ho per python 2.4-3.2 a 32/64 bit contro Postgres 7.4-9.1, ma non ho una sola riga per capire quando e quale versione di zope si rompe :) Il problema dei DA è che non essendo usati dai core developer finisce che non sono mantenuti. Secondo me se non riesci a trovare qualcuno che usi in modo continuativo ZPsycopgDA per i propri progetti la cosa migliore è abbandonare il codice. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] [OT] info su Database no-sql
Massimo Capanni wrote: buongiorno, per caso ho scoperto l'esistenza dei database no-sql (o no-rel). Conoscendo gia' i normali DB relazionali mi incuriosisce questo nuovo tipo di sistema; avete idea quando puo' essere vantaggioso utilizzarli? Dove posso trovare della documentazione generale su questo argomento senza entrare troppo nei particolari? grazie massimo Il sito di riferimento è: http://nosql-database.org/ su questo trovi i link alle varie tecnologie e ad articoli in tema. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Sulla falsariga del PyDayBO
Carlos Catucci wrote: Io posso riproporre un talk su Django che ho già proposto al PyDayBo. Figo! Io ne poropngo uno su TurboGears2. Servirebbe un Zope/Plonista per completare il trittico. Greetings JOKER Ltd. Eccomi, ho già confermato la mia disponibilità a Valerio in via privata. Oltre ai singoli talk potremmo fare anche un panel stile questo: http://www.b-list.org/weblog/2007/feb/23/pycon-2007-web-frameworks-panel/ -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] python e html
Francesco Bonanno wrote: Buonasera, sono nuovissimo della lista (ringrazio per l'ammissione) chiedo semplicemente se esistono guide possibilmente in italiano sulla creazione di applicazioni web, senza l'ausilio di framework (django, zope...) Grazie per la pazienza Un framework minimo ci vuole, non 'vuoi' veramente scrivere le appplicazioni usando CGI, almeno una libreria WSGI ci vuole. Ad ogni modo ci sono vari prodotti interessanti (e se fai una ricerca su pypi li trovi facilmente), io ti consiglio di provare repoze.bfg: http://bfg.repoze.org/ Si può partire mettendo insieme poche cose, si può scegliere se usare URL code mapping o il traversal alla zope, si può scegliere di non usare backend oppure tra un relazionale (magari con sqlalchemy) e un no-sql come ZODB, la gestione della sicurezza è parte del core. Mi è piaciuto il fatto che le applicazioni costruite con questo strumento possano crescere con le nostre competenze. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Sulla falsariga del PyDayBO
Valerio Turturici wrote: Ciao ragazzi, penso sia arrivato il momento di iniziare a parlare seriamente del PyDay a Pisa perchè il tempo vola. L'ultima volta ho avuto qualche risposta, ma stavolta spero di riceverne di più. Ho individuato due periodi temporali che sembrerebbero adatti per lo svolgimento dell'evento: dopo Ottobre(in questo mese c'è il Linux Day), quindi tra Novembre e Dicembre dopo Gennaio, quindi tra Febbraio e Marzo(perchè poi ci sarà fermento per la PyCon[a cui spero di poter partecipare, per la prima volta].). Per il periodo dipende molto dal target, se saranno presenti soprattutto studenti andranno evitati i periodi in cui ci sono gli esami. In ogni caso penso che sia meglio stare lontani dal PyCon. Inoltre, c'è la possibilità di essere aiutati dal GULP a cui tempo fa avevo proposto l'idea e sembravano entusiasti. Qualche periodo vi sembra più congeniale? Per i locali già Pietro tempo fa mi aveva dato alcuni contatti, ma non ci dovrebbero essere problemi. Ciao. Farlo in contemporanea al Linux Day? Nel GULP ci sono diversi pythonisti e accorpare i due eventi potrebbe semplificare l'organizzazione. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] piccola applicazione web
Valerio Pachera wrote: Ciao a tutti, ho bisogno di creare una pagina web contenente un form. I valori inseriti nel form devono essere passati ad un script python che va a scrivere su dei file. Ho bisogno inoltre di popolare il form leggendo (tramite script python) gli stessi file su cui devo andare a scrive. Questo per permettere all'utente di non riscrivere ogni volta i valori inseriti in precedenza nel form e scritti su file. La mia esperienza in python è piuttosto ridotta. Conosco discretamente html e css. Stavo valutando l'uso di un framework ma mi sembra una soluzione alquanto sovradimensionata. Grazie. paster serve http://pythonpaste.org/script/ (veramente minimale) -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Sulla falsariga del PyDayBO
Simone Dalla wrote: Il giorno 11 marzo 2010 19.28, Valerio Turturici turturici.vale...@gmail.com ha scritto: Come vi sembra il 22 Maggio come data? Troppo vicino al post-PyCon? Troppo vicina in un periodo pieno sia scolasticamente che lavorativamente? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python Sabato?? Indicativamente potrebbe andare. Io non ho problemi per quella data. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Sulla falsariga del PyDayBO
Valerio Turturici wrote: Salve a tutti, è da qualche mese che pensavo di voler organizzare una conferenza locale come quella che a breve si terrà a Bologna. La vorrei fare a Pisa e sto sondando un pò il terreno per vedere se qualcuno della lista è disponibile sia a partecipare come relatore, sia (se è vicino) ad organizzare. Ho notato che qua non spopola poi cosi tanto Python quindi credo sia una buona opportunità. Che ne pensate? Secondo me a Pisa lo usano ma non lo fanno sapere :) Sono disponibile come relatore ma il tempo per partecipare all'organizzazione mi manca. A Pisa ho fatto due talk: uno al Gulp in cui ho presentato il linguaggio e uno al Linux Day in cui ho presentato TDD utilizzando python al posto del java. Posso riproporre uno dei due seminari oppure parlare di framework web: Zope in particolare ma posso fare una breve panoramica su gli n-mila che abbiamo a disposizione. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] creazione package
Stefano Costa wrote: Un saluto a tutti, dopo un periodo di latitanza mi sono re-iscritto alla lista. Sto sviluppando GNUCal, un programma rilasciato sotto GNU GPL per la calibrazione di datazioni al radiocarbonio. [1][2][3] Al momento c'è una libreria composta da 3 moduli, e un programma che funziona da linea di comando. Vorrei creare un package installabile (da caricare poi anche su PyPI), in modo che il programma da linea di comando venga installato come eseguibile nel path di sistema. Ho letto la documentazione online di setuptools, e anche osservato il codice sorgente di alcune applicazioni e librerie (ad es. sphinx), ma sono ancora abbastanza confuso: non mi è molto chiaro dove dovrebbe stare l'eseguibile nel source tree, né come indicare questo nel setup.py. Se qualcuno può darmi una dritta ... Ciao, steko Dai uno sguardo a: http://pypi.python.org/pypi/zc.buildout/ anche se di solito si usa con zope e simili dovresti essere in grado di creare un ambiente per la tua applicazione. In particolare la configurazione descritta in Try out an egg permette di creare un interprete che gira in un ambiente con gli egg che dichiari. Unico neo della documentazione: per creare il comando 'buildout' che esegue i comandi della configurazione ci vuole lo script 'bootstrap.py' che trovi su svn. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] creazione package
Stefano Costa wrote: Il giorno ven, 15/05/2009 alle 18.10 +0200, Riccardo Lemmi ha scritto: Dai uno sguardo a: http://pypi.python.org/pypi/zc.buildout/ anche se di solito si usa con zope e simili dovresti essere in grado di creare un ambiente per la tua applicazione. Per creare lo scheletro ho usato paster, che mi pare sia sostanzialmente simile a zc.buildout (analogamente, di solito è usato per applicazioni web ma funziona per tutto). Il paster (tra le varie cose che fa) crea scheletri di applicazioni, io uso 'ZopeSkel'. Ad esempio plone3_buildout crea un cartella con dentro la configurazione base e lo script bootstrap.py che genera il comando 'buildout'. Mi sembrava di aver capito che devo usare la voce console_scripts in entry_points per l'eseguibile, ma non ho capito come indicare il modulo da eseguire. Sono invece riuscito ad installare il modulo eseguibile aggiungendo scripts = ['gnucalcli.py'] sempre nel setup(). Non so quanto sia standard come soluzione, anche se ha funzionato. A questo punto sto cercando di capire come installare la documentazione e altri file che sono necessari per il funzionamento del programma - e come recuperarli una volta che sono installati al posto giusto. Mi pare di aver capito che si usa pkg_resources per questo, è corretto? Non so, per dichiarare le dipendeze uso 'install_requires' e gli scheletri di egg che uso hanno una cartella docs usata in setup.py con questa riga: long_description=open(README.txt).read() + \n + open(os.path.join(docs, HISTORY.txt)).read() Se invece pensi che zc.buildout sia meglio, provo quello. Grazie, steko Non so se sia meglio, io li uso per creare installazioni complete ma non di sistema. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Gestionale fatto in casa
Diego Barrera wrote: Riccardo Lemmi ha scritto: Diego Barrera wrote: ... Potresti usare/provare http://www.openerp.com/ anche solo guardare come è fatto potrebbe essere un buon esercizio. La ditta si occupa non di vendita, ma di depositi e logistica... ho stracercato in giro, ma solo gestionali per il commercio : ( Grazie comunque openerp ha una struttura modulare e forse questo modulo fa la caso tuo: http://doc.openerp.com/book/5/index.html#part-phys Pensa a openerp più come un framework che ad un prodotto finito, la sua forza, secondo me, è il fatto che è facile da estendere. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Gestionale fatto in casa
Diego Barrera wrote: Salve a tutti, mi sto avventurando nella stesura di un piccolo gestionale per la mia ditta. L'unica sicurezza che ho è quella di scrivere il mio progetto in python. Il gestionale mi dovrà gestire fondamentalmente il magazzino, le spedizioni, i clienti e i fornitori; dovrà generare varie stampe.. niente di speciale. Gli articoli penso saranno al massimo circa 100.000, le spedizioni annuali altrettante. Il gestionale sarà utilizzato da macchine linux e win con DB server linux. Sono indeciso sul DBMS: mysql o postgres , quale ha la migliore integrazione con python? Sono indeciso anche sull'interfaccia utente: ncurses o gui (pyqt, wxpython)? Poichè devo iniziare con entrambi da zero, mi interessa il piu' rapido da apprendere e sviluppare. Grazie per le risposte. Potresti usare/provare http://www.openerp.com/ anche solo guardare come è fatto potrebbe essere un buon esercizio. -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python