Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Silver1101

#1
Si, he estado mirando golang, pero parece bastante más complicado sobretodo para novatos como yo. De momento voy a seguir con python, mientras funcione en mi ordenador ya tengo suficiente.

Muchisimas gracias por tu aportación!!
#2
Problema encontrado

El problema principal con PyInstaller y Mac es que solo funciona en versiones de MacOS anteriores a la 10.14.6, la nueva versión de MacOS tiene un error con las aplicaciones tkinter y dejan de funcionar, en el momento en que se ejecutan estas aplicaciones, el sistema se congela y vuelve a la pantalla de inicio de sesión.

Aquí he encontrado la explicación más detallada:
https://discussions.apple.com/thread/250549297

A través de este enlace encontré varias posibles soluciones al respecto:
https://github.com/pyinstaller/pyinstaller/issues/3753

Pero yo las he probado y no me han funcionado.

Solucion final: He probado PyInstaller con GUI creados con PyQt5 en vez de tkinter y funciona perfecto!!  Así que el problema está en tkinter.

Espero que esto sirva para orientar a otras personas que hayan tenido el mismo problema. Un saludo!!



#3
Muchas gracias por tu respuesta.

El error real es lo que no soy capaz de identificar.
Yo creo que algo me fatla por instalar o añadir en algun sitio porque cuando intento ejecutar el script compilado (ahora estoy hablando de pyinstaller en mac) me aparece el siguiente mensaje:

macbook-2:~ usuario$ /Users/usuario/Desktop/p/dist/app ; exit;
Traceback (most recent call last):
 File "site-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py", line 28, in <module>
FileNotFoundError: Tcl data directory "/var/folders/_w/kq6md5vj4wg5nf8jq4bhc2ww0000gn/T/_MEIRLEfIp/tcl" not found.
[1442] Failed to execute script pyi_rth__tkinter

logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Proceso completado]


Lo que está en negrita es lo que no entiendo. Pone que hay un error para ejecutar el script pyi_rth__tkinter.py    ¿Pero donde se supone que debe estar ese script si yo ya tengo la libreria tkinter intalada previamente??
#4
Hola compañeros

He empezado hace poco con la programación Python, y me he encontrado con un problema que me esta dando bastantes quebraderos de cabeza.

Resulta que trato de empaquetar mis scripts en archivos ejecutables .app o .exe y no soy capaz de conseguirlo ni en windows ni en mac. He probado con PyInstaller py2app (en mac) y py2exe (en windows).

Con Pyintaller lo consigo solo con scripts ejecutables en shell "los tipicos print("hola mundo")". Pero cuando el programa es un GUI con tkinter es cuando me genera el problema. Cuando utilizo py2app, me genera el archivo.app sin problema, en la temrinal me sale todo OK, pero a la hora de ejecutarlo me aparece un Fatal error, y instantaneamente me reinicia la sesión del mac.

En los tutoriales que aparecen en youtube, en los manuales de python, y diferentes paginas realizan el procedimiento con muchisima facilidad. Pero yo me encuentro con un porblema detrás de otro.

¿Alguien ha topado con los mismos problemas?¿Como lo resolvisteis?
¿Que metodo utilizais vosotros para empaquetar vusestros scripts? ¿Cual considerais más sencillo?

#5
Pues si, ahí estaba el fallo, ahora ya me funciona de forma correcta, y los he estado probando.
¡¡¡Muchísimas gracias por tu ayuda NEBIRE !!!  no me habría dado cuenta de los errores si no llega a ser por la explicación.
#6
No, al final esos plugins ya los tenia instalados.
Pero mirando esto que me has dicho, me he dado cuenta que aunque tuviera estos plugins instalados, había uno (el Java FX 2) que estaba desactivado.

Solo activándolo ya puedo utilizar netbeans con normalidad

Muchas gracias!!!
#7
Muchas gracias AlbertoBSD y NEBIRE, pues he modificado el post, y he añadido el código del Servidor y el código del Cliente en el que hago el listen, para poder dar mas información.

Lo que no entiendo del todo es esto que me explicas NEBIRE. Entiendo que solo tiene que haber una única clase Servidor (pero ya lo hago ¿no?) solo tengo una clase servidor y solo le hago una sola instancia en la misma clase. ¿no seria correcto?. De todos modos estoy repasando mejor los ejemplo de código que me has puesto, porque estoy seguro de que has dado en el clavo.

Gracias!!!

#8
PROBLEMA A LA HORA DE INVOCAR OTRAS CLASES DESDE LA CLASE PRINCIPAL.

Pues estoy programando un chat a través de Sockets usando Netbeans, en el que tengo por un lado en un paquete, la clase Servidor, y en otro paquete la clase Cliente. En principio el programa funciona bien, cada paquete tiene sus respectivas clases con sus métodos de envío y recepción de mensaje, cada uno con su clase principal en el que tienen bien definida la IP y los puertos para conectarse.



Si ejecuto el servidor, y luego el cliente por separado, todo funciona perfecto (tal y como se ve en la imagen). El problema surge cuando quiero crear un panel principal con dos botones, (Servidor y Cliente), de modo que cuando pulso el botón servidor, que se me abra la ventana del servidor, y después si pulso el botón cliente, que me aparezca la ventana del cliente. Para eso utilizo el código de siempre para invocar otras clases:

private void btnServidorActionPerformed(java.awt.event.ActionEvent evt) {  

       PrincipalChatS verS=new PrincipalChatS();

//La primera línea es para asignarle la acción al botón del Servidor (llamado btnServidor). La segunda línea sirve para invocar la clase.

Con este código consigo (aunque parcialmente) mi objetivo, y cuando pulso el botón servidor me aparece la ventana del servidor, y lo mismo me pasa con el cliente, el problema es que no funcionan. Como se ve en la siguiente imagen:



Aquí dejo el código de la interfaz del Servidor (con el nombre de clase "PrincipalChatS"). He marcado en rojo la parte donde hago el Listen




Y para el cliente el código donde pongo el listen es este:



Al lado del código pongo para que pongo cada cosa, para que se vea más o menos para que es cada parte del código.

Pero el problema es ese. Al invocarlos desde otra clase, no funcionan.

¿por qué no funcionan cuando los invoco, y en cambio sí me funcionan si los ejecuto directamente, si el código es el mismo?
#9
Tal vez tu tarjeta de red no sea compatible con Kali. Eso pasa en muchos de los casos. Para eso, podrías probar de usar una antena Wifi externa (asegurate de que sea compatible) y seguro que ya no tendrás ese problema.
#10
COMPLICACIONES A LA HORA DE INSTALAR NETBEANS EN DEBIAN.


Primero dejo expuesto el problema y mas abajo, como se acaba resolviendo:

Planteamiento del problema:
Decidí usar Kali Linux (que está basado en Debian) como segundo sistema operativo, para mis experimentos con los ordenadores. Como seguramente ya sabréis, es un sistema operativo lleno de herramientas muy interesantes y útiles, como por ejemplo los que se pueden usar para ingeniería inversa, o para detectar vulnerabilidades.

Para trabajar algunos programitas en Java, yo uso la IDE Netbeans, así que decidí instalarla también en Kali para poder hacer mis cosas desde allí sin tener que estar cambiando de SO continuamente. Pero una vez la instalo, me encuentro con el problema siguiente:



Como podéis ver en la imagen, no puedo crear un nuevo proyecto de java.
Únicamente me ofrece solo esas 3 categorías.

A pesar de que he instalado el JDK previamente, y al instalar netbenas, señalé en que carpeta se encuentra el JDK, pero sin embargo cuando abro la IDE me encuentro con esto, que no me da opción para iniciar proyectos en Java.

¿Donde está el fallo?

Lo que hice fue descargar el JDK de Oracle. Descargué el archivo .tar y lo descomprimí desde la consola:

tar -xvf jdk-(el numero de la versión).tar.gz

La carpeta resultante la moví al directorio /opt/, también desde consola:
mv jdk1.8.0_144 /opt

Entro en la carpeta:
cd /opt/jdk1.7.0_45

Y empiezo el proceso de registrar la versión java como alternativa y lo cambio para usarla como predeterminada:

update-alternatives --install / usr / bin / java java /opt/jdk1.8.0_144/bin/java 1

update-alternatives --install / usr / bin / javac javac /opt/jdk1.8.0_144/bin/javac 1

update-alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so /opt/jdk1.7.0_45/jre/lib/amd64/libnpjp2.so 1

update-alternatives --set java /opt/jdk1.8.0_144/bin/java

update-alternatives --set javac /opt/jdk1.8.0_144/bin/javac

update-alternatives --set mozilla-javaplugin.so /opt/jdk1.8.0_144/jre/lib/amd64/libnpjp2.so



Para asegurarme de que está instalada tecleo en consola:

java -version

Y me confirma que el JDK ya está instalado:

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b17)
Java HotSpot(TM) 64-Bit Server VM (build 144.144-b02, mixed mode)


Después instalando netbeans, puse la ruta donde se almacenaba el JDK, igual que en la imagen:



Solo que yo a diferencia de la imagen, el JDK lo tengo en /opt/jdk1.8.144.

Tengo que añadir que cuando me descargué netbeans desde la página de Oracle, ya me aseguré de que fuera la versión más completa con más tipos de programación.

SOLUCIÓN:

Aunque te instales los plugins, en algunos sistemas operativos se activan de forma automática, pero por lo visto en Debian, o mas concretamente en Kali, hay que activarlos de forma independiente.



A pesar de que ya los tenia activados casi todos, me quedaba uno (el Java FX2) por activar, y eso era la causa del problema. Solo activándolo ya he podido usar netbeans con total normalidad.