Forum >> Principianti >> Java e Python...

Pagina: 1

Ciao a tutti,
programmo in java e ho incontrato non pochi problemi riguardo la navigazione web di questo linguaggio.
Considerato che attraverso java posso interpretare python, ho pensato di realizzare un webBrowser molto "spartano" in python e di richiamarlo attraverso la classe java. Non sono esperto, quindi mi rivolgo alla vostra comunità per capire alcuni passaggi che mi servono per realizzare questo progettino.
Ho trovato qualcosa in rete però ho un problema di eccezione...
A me occorre più che altro una classe in py a cui passare dei parametri, ovvero l'url che il client digiterà attraverso la mia interfaccia.
Fatto ciò dovrà aprirsi una finestra browser e visitare l'url digitato.

Ho fatto alcune prove con il classico "hello world" e fra java e py non si presenta alcun conflitto.
Invece caricando una classe che ho trovato sul web sorgono non pochi problemi.
Andando ad intuito credo che io debba importare nel progetto java alcune librerie (non ho idea come definirle).
Questo per me potrebbe essere un problema perché non desidero appesantire il progetto poiché dovrò condividerlo, ma se è necessario, carico...
Mi chiedevo se qualcuno di voi mi potesse dare una mano...
La classe che ho caricato è questa:
import Gtk
import WebKit2

class  BrowserView:
    def __init__(self):
        window = Gtk.Window()
        window.connect('delete-event',Gtk.main_quit)

        self.view = WebKit2.WebView()
        self.view.load_uri('http://www.google.com')

        window.add(self.view)
        window.fullscreen()
        window.show_all()


if __name__ == "__main__":
    BrowserView()
    Gtk.main()

Come eccezione dall'IDE ottengo:
Exception in thread "main" Traceback (most recent call last):
  File "brw.py", line 1, in <module>
    import Gtk
ImportError: No module named Gtk

Pare che io non abbia caricato un modulo. E non ho neanche idea dove possa trovarlo...
Brancolo nel buio...

Attendo vostre
Ciao!

Come eccezione dall'IDE ottengo:
Exception in thread "main" Traceback (most recent call last):
  File "brw.py", line 1, in <module>
    import Gtk
ImportError: No module named Gtk
L'errore è autoesplicativo, mi verrebbe da dirti installa la libreria richiesta e non avrai problemi.

Comunque sia ometti delle informazioni necessarie. Tanto per farti uno stupido esempio, se utilizzassi Python 2.7, il modulo sarebbe gtk con la g piccola. Insomma mancano perlomeno due informazioni vitali: piattaforma di utilizzo (Linux, Windows, ...) e versione del linguaggio (2.7, 3.5, ...).

Fai sapere.

Cya


Ciao e grazie per l'intervento!
Poi, ieri, ho continuato a smanettare un po' per capire py. Effettivamente sono venuto alla conclusione che bisogna installare alcune librerie/moduli.

Ho alcune domande a riguardo.
Le librerie, le posso trovare girando sul web?
Un volta trovate, per "installarle", copio la cartella e la metto nel progetto java passando il path alla classe py o la procedura è diversa? In quel caso, per andarle a recuperare, cosa vuole (from, import), cosa dovrei metterci dentro?
Il client avrà problemi? Per visualizzare qualcosa in py dovrà necessariamente aver installato qualcosa? C'è qualche problema riaguardo la piattaforma? Win 32/64? Che tu sappia potrebbe verificarsi qualche conflitto?

Come puoi notare ho un sacco di domande banali, ma per il momento desidero andare per gradi, anche se, una risposta non conforme alle mie aspettative compromette tutto.
Considera che io non passo py, metto py all'interno di un progetto java. Non avendo mai fatto una roba del genere sono pieno di dubbi.
Comunque riguardo a ciò che mi hai scritto, effettuando

import sys
print (sys.version)

questo è l'output:
2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] 
Il sistema su cui lavoro è win 7 64bit e il progetto dovrà girare solo su win 7/superiore a 64.
Grazie
Non avendo esperienza specifica in Java, ti rispondo per concetti generali.

La risposta è sì, devi avere nel path dove hai installate le librerie, quelle che ti servono. Il Linux la maggior parte si trovano sotto /usr/lib/<versione linguaggio> anche se poi l'utilizzo di virtualenv, diffusissimo tra gli sviluppatori Python, modifica radicalmente questo assunto.

Ora per l'installazione ci sono molti modi per procedere, questa risorsa ti può sicuramente aiutare.

Cya
Ciao e grazie per il supporto...
Dunque è un po' un casotto, perché io non lavoro direttamente su python, ma lo avvio attraverso java precisamente attraverso Jython. In pratica potrei non averlo installato nella mia macchina, perché tanto è java che lo avvia.. Difatti molti anni orsono avevo installato python, così tanto per "giocarci" (ma poi non ho avuto più tempo) e quella sul mio sistema è la 3.5, invece Jython ha la 2.7 che va a nozze con quello che mi occorre..

Detto questo, tutto quello mi serve, intendo moduli e lib, deve risiedere nella cartella del progetto, java, e non nella path win/python. Anche perché è un progetto che devo condividere quindi, il client non disporrà di python! Dovrò buttare il tutto, dentro al mio eseguibile e fare in modo che lavori...

Ora io ho trovato una classe che crea un browser. Preciso che devo creare una finestra che funga da browser, quindi non devo usare il modulo webbrowser, altrimenti avrei già risolto... :)
Eccola qui (scroccata fresca, fresca dal web):
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

app = QApplication(sys.argv)

web = QWebView()
web.load(QUrl("http://www.google.com"))
web.show()

sys.exit(app.exec_())

Naturalmente mi chiede i famosi moduli o librerie che JYthon n'è sprovvisto!
E dunque cercando in giro ho trovato PyQt4(2.7). Guardando meglio la cartella PyQt4, dopo l'installazione, ho dei file, che in realtà (suppongo) mi servono e sono:
QtCore.pyd 
QtGui.pyd 
QtWebKit.pyd 
Ora secondo te, se io creassi all'interno del progetto java una cartellina PyQt4 e ci butto dentro quei file, avviandolo, me li recupera se lascio nella classe.py:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

Che dici?? Oppure devo cambiare qualcosa, per risalire a quei file??
E soprattutto quei file hanno bisogno di altri file per lavorare?? Quindi devo metterci dentro altro??
O sono completamente in errore??

In realtà nel progetto, l'albero sarebbe questo:
classeBrowser.py
PyQt4 
  |--QtCore.pyd 
  |--QtGui.pyd 
  |--QtWebKit.pyd 
Attendo un tuo feedback!
Ciao!
Aggiornamento....
Dopo immense ricerche e tentativi di importare vari moduli, mi sono imbattuto:
http://stackoverflow.com/questions/7983075/how-to-include-pyqt-with-jython-2-5-2

In pratica non è possibile usare PyQt in jython...
Mi occorre realizzare un browser in python che si interfacci senza moduli...
Qualcuno di voi può aiutarmi in questo??
Purtroppo stai andando su terreni a me sconosciuti, Jython e Java.

Non posso aiutarti nel caso specifico, ma posso darti il consiglio di iscriverti anche alla nostra mailing list e di riproporre la domanda, ci sono diversi programmatori che hanno esperienze trasversali anche in altri linguaggi.

Cya
Dunque, dal punto di vista teorico è molto semplice, a livello pratico da parte mia è complesso.
Attraverso jython non puoi importare moduli o librerie. Quindi ho necessità di realizzare un browser in python.
Un semplice classe, che non sfrutta funzioni prese da moduli. Un'interfaccia base, semplicissima, spartana, che io possa allegare al progetto e richiamare.

In pratica sto cercando qualcosa del genere su google ma trovo solo classi o progetti che importano sempre qualcosa e qui sta il mio problema.
Se trovassi una classe "browser.py", dove non c'è alcun modulo importato, risolvo tutto.
Ciò di cui ho davvero bisogno è un pannello che mi permetta di visualizzare un contenuto web a cui passare l'url dove il client atterrerà.
Un cosa veramente spartana, ma non riesco a trovarlo perché gli esempi e tutorial che ho visto finora riportano sempre dei moduli, moduli che jython non dispone.
Se qualcuno riesce a postarmi una classe che funge da browser senza moduli o lib importate sarebbe il massimo!




Pagina: 1



Esegui il login per scrivere una risposta.