Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

922
Visualizações
Mostrar diagramas de matplotlib (y otra GUI) en Ubuntu (WSL1 y WSL2)

Entonces, parece que en ubuntu para Windows (subsistema de Windows para Linux), la gente sugiere que necesitamos usar el backend Agg y simplemente guardar imágenes, no mostrar gráficos.

 import matplotlib matplotlib.use('Agg') # no UI backend import matplotlib.pyplot as plt import numpy as np t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) plt.plot(t, s) plt.title('About as simple as it gets, folks') #plt.show() plt.savefig("matplotlib.png") #savefig, don't show

¿Cómo podríamos llegar a donde plt.show() realmente nos mostraría una imagen? Mi opción actual es anular plot.show() para, en cambio, simplemente savefig a plot-148123456.png en /mnt/c/Users/james/plots/ en Windows y simplemente tener una ventana del explorador abierta para ver las imágenes.

Supongo que podría alojar esa carpeta y usar un navegador.

Mi objetivo es poder ejecutar ejemplos simples como el código anterior sin cambiar el código para enviar las imágenes por ftp a algún lugar, etc. Solo quiero que la trama se muestre en una ventana.

¿Alguien ha encontrado una manera decente de hacerlo?

over 4 years ago · Santiago Trujillo
8 Respostas
Responde à pergunta

0

Para WSL2 con la versión Ubuntu Focal Fossa, descargué e instalé VcXsrv en Windows. Yo uso esta configuración:

Configuración de VcXsrv

No sé para Native OpenGL , pero parece importante deshabilitar el control de acceso.

Ahora, necesita exportar la variable env DISPLAY en WSL.

Encontré la dirección correcta en /etc/resolv.conf , pero la que se encuentra en el resultado de ifconfig no lo es. Así que el siguiente comando no funciona para mí:

 export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')

Esa dirección IP también se puede encontrar en el comando ipconfig en el contexto del comando CMD.exe . Busque vEthernet (WSL) , ese debería ser el indicado.

Ahora, puede probar que todo funciona simplemente ejecutando xcalc en su entorno WSL. Si xcalc no está presente, instálelo:

 sudo apt-get update && sudo apt-get install x11-apps

El comando xcalc debería abrir una aplicación con este aspecto en Windows:

resultado xcalc

Si funciona, eso significa que la conexión a su servidor X es posible, pero tal vez necesite instalar algún paquete adicional para Python como:

 sudo apt-get install python3.x-tk

Cambie .x según su versión de python.

over 4 years ago · Santiago Trujillo Relatório

0

Los gráficos también se pueden ver en WSL con Visual Studio Code, que a partir de la versión de junio de 2019 incluye un "Visor de gráficos" .

En un archivo .py normal, al insertar una cadena de comentarios #%% se marca el código como una celda de Jupyter (IPython) y una lente de código muestra opciones para Run Cell . Además, hacer clic derecho dentro de un archivo de Python incluye la opción:

Ejecutar el archivo actual en la ventana interactiva de Python

Del lanzamiento de VS Code de junio de 2019:

La actualización de junio de 2019 incluyó un visor de gráficos completamente nuevo que se puede usar para manipular gráficos de cualquier imagen, como los populares gráficos de matplotlib.

Puede probarlo haciendo doble clic en los gráficos o haciendo clic en el botón "expandir imagen" que se muestra cuando pasa el mouse sobre las imágenes del gráfico en la ventana interactiva de Python:

Con el visor de gráficos, puede desplazarse, acercar/alejar, navegar por los gráficos en la sesión actual y exportar gráficos a formatos PDF, SVG o PNG.

over 4 years ago · Santiago Trujillo Relatório

0

En mi caso (Windows 10, WSL2, Ubuntu 20.04 con miniconda3 y entorno virtual donde instalé todos los paquetes necesarios de Python 3.6 usando el comando conda , Visual Studio Code basado en Windows con extensiones 'Python' y 'Remote - WSL') instalé VcXsrv bajo Windows, y agregó

 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0

al archivo .bashrc en Ubuntu. Además, antes de ejecutar el código de Python desde WSL, debemos iniciar XLaunch y seleccionar 'Desactivar control de acceso' (también dejé marcado 'Native opengl'). En la carpeta del proyecto, no nombre su archivo de Python como matplotlib.py (algunos problemas relacionados se informan aquí ).

over 4 years ago · Santiago Trujillo Relatório

0

En dos instancias separadas (wsl1 y wls2 con ubuntu 20.04) mientras usaba PyQt5 me faltaban varias bibliotecas libxcb (por ejemplo, libxcb-icccm4) que no se imprimieron al intentar trazar. export QT_DEBUG_PLUGINS=1 para averiguar cuáles y luego simplemente los instalé. Básicamente los pasos aquí .

over 4 years ago · Santiago Trujillo Relatório

0

Con Windows 11 22000, las aplicaciones de GUI de Linux son oficialmente compatibles de fábrica , siempre que se cumplan los requisitos previos. Sin ajustes, sin hacks, sin cambios en el firewall, etc.

Requisitos previos:

  1. Windows 11 compilación 22000 o superior
  2. Controlador instalado para vGPU (Intel/Nvidia/AMD)

Luego ejecuta los comandos
wsl --actualizar
wsl --apagado

Hecho !!

Fuente oficial:https://docs.microsoft.com/en-us/windows/wsl/tutorials/gui-apps

over 4 years ago · Santiago Trujillo Relatório

0

Descubrí que el mejor enfoque es instalar Jupyter en el Subsistema de Windows para Linux (WSL) siguiendo

 sudo apt update && upgrade sudo apt install python3 python3-pip ipython3

Ahora puedes instalar matplotlib

 pip3 install matplotlib

Y el cuaderno Jupyter

 pip3 install jupyter

Consulte este enlace si necesita más información sobre la configuración de Python en el subsistema de Windows para Linux (WSL)

over 4 years ago · Santiago Trujillo Relatório

0

Para que matplotlib funcione con GTKAgg en Bash en Ubuntu en Windows , yo:

  1. instaló VcXsrv en Windows (pero las cosas deberían funcionar igual con Xming)
  2. configure DISPLAY como se indicó anteriormente [ export DISPLAY=localhost:0.0 (agregar a ~/.bashrc para hacerlo permanente)]
  3. ejecutado sudo pip uninstall matplotlib
  4. seguido de sudo apt install python-matplotlib
  5. matplotlibrc actualizado para leer backend : GTKAgg (en lugar de backend : agg )
  6. También ejecuté sudo apt-get install python-gtk2-dev , pero puede que no sea necesario.

Parece necesario desinstalar el matplotlib instalado con pip y reinstalarlo a través de apt porque pip no incluye las extensiones C necesarias para ejecutar GTK, pero la versión apt sí.

over 4 years ago · Santiago Trujillo Relatório

0

Ok, entonces lo tengo funcionando de la siguiente manera. Tengo Ubuntu en Windows, con anaconda python 3.6 instalado.

  1. Descargue e instale VcXsrv o Xming (X11 para Windows) desde sourceforge (consulte la edición a continuación)
  2. sudo apt-get update
  3. sudo apt-get install python3.6-tk (es posible que deba instalar un python*-tk diferente según la versión de python que esté usando)
  4. pip install matplotlib (para matplotlib, pero muchas otras cosas ahora también funcionan)
  5. export DISPLAY=localhost:0.0 (añadir a ~/.bashrc para hacer permanente. Ver WSL2 a continuación)

De todos modos, después de todo eso, este código que se ejecuta en ubuntu en wsl funcionó como está:

 import matplotlib.pyplot as plt import numpy as np t = np.arange(0.0, 2.0, 0.01) s = 1 + np.sin(2*np.pi*t) plt.plot(t, s) plt.title('About as simple as it gets, folks') plt.show()

resultado: ingrese la descripción de la imagen aquí

Tal vez esto se haga mejor a través de un cuaderno Jupyter o algo así, pero es bueno tener la funcionalidad básica de línea de comandos python matplotlib en Ubuntu para Windows en Subsystem para Linux, y esto hace que muchas otras aplicaciones de interfaz gráfica de usuario también funcionen.

Por ejemplo, puede instalar xeyes, y le dirá que instale x11-apps e instalar eso instalará GTK que usan muchas aplicaciones GUI. Pero el punto es que una vez que tenga su PANTALLA configurada correctamente y su servidor x en Windows, entonces la mayoría de las cosas que funcionarían en un ubuntu nativo funcionarán para WSL.

Editar 2019-09-04 : Hoy tuve problemas con 'no se pueden obtener recursos de pantalla' después de actualizar algunas bibliotecas. Así que instalé VcXsrv y lo usé en lugar de Xming. Simplemente instálelo desde https://sourceforge.net/projects/vcxsrv/ y ejecute xlaunch.exe, seleccione varias ventanas, siguiente, siguiente, siguiente, ok. Entonces todo funcionó.

Edición para usuarios de WSL 2 2020-06-23 WSL2 (actualmente anillo rápido interno) tiene compatibilidad con GPU/docker, por lo que vale la pena actualizarlo. Sin embargo, se ejecuta en vm. Para WSL 2, siga los mismos pasos 1-4 y luego:

  1. la ip no es localhost. está en resolv.conf, así que ejecute esto en su lugar (e inclúyalo en ~/.bashrc):
 export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
  1. Ahora vuelva a verificar el firewall: Seguridad de Windows -> Firewall y protección de red -> Permitir una aplicación a través del firewall -> asegúrese de que VcXsrv tenga marcado tanto el público como el privado. (Al iniciar xlaunch por primera vez, es posible que reciba un aviso para permitir a través del firewall. Esto también funciona. Además, si VcXsrv no está en la lista de aplicaciones, puede agregarlo manualmente, por ejemplo, desde 'C:\Archivos de programa\vcxsrv\vcxsrv .exe')
  2. Inicie VcXsrv con "Desactivar control de acceso" marcado

Nota: algunos usuarios de WSL2 recibieron un error como couldn't connect to display "172.xxx:0" . Si es así, intenta comprobar la dirección IP almacenada en DISPLAY con este comando: echo $DISPLAY . Si la IP mostrada parece ser incorrecta (es decir, "8.8.8.8" u otra dirección IP que no funciona), debe cambiar el código en ~/.bashrc que se muestra en el punto 5 a algo que obtenga la dirección IP de su instancia. Un usuario dijo que esto funcionó: export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}') . Sin embargo, para algunos otros no funcionó. YMMV, pero solo encuentre su IP y use if para DISPLAY. Para la mayoría de los usuarios de WSL2, el comando del n.º 5 funciona.

Edite para Windows 11 : si MS lo convenció de deshacerse de su computadora vieja y comprar una con un TPM y obtuvo Windows 11, obtendrá la GUI de forma gratuita. Espero que agreguen una ruta de actualización para hacer eso en Windows 10 porque Win10 será como XP y durará mucho tiempo ya que MS decidió que necesita una computadora reciente, aunque Win11 funcionaría bien en computadoras antiguas.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda