Python - Ejecutar un programa python desde otro programa en python

 
Vista:
sin imagen de perfil
Val: 22
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por Jesús (8 intervenciones) el 09/05/2020 19:08:03
Hola, tengo un programa en pytrhon en el que desde este quiero abrir otros programas en python a través de button. Lo he intentado con subprocess pero no doy con la tecla.
1
2
import subprocess
result=subprocess.getoutput('/home/pi/Programas_Py/calendario.py')

Lo ejecuto pero no dá ningún error. Alguna sugerencia?
Muchísima gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 2.107
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por joel (442 intervenciones) el 10/05/2020 09:00:48
Hola jesús tu código es correcto... result tiene el resultado de ejecutar el archivo calendario.py

Exactamente que esperas que haga?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 22
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por Jesús (8 intervenciones) el 10/05/2020 14:21:38
Pues quiero lo ejecute. El programa calendario es un script con tkinter pero no me hace nada, puede estar mal la dirección de carpetas? no la ruta que estoy seguro que es es esa, comas,puntos ni idea.
Pero he probado con otro programa print ("hola") para probar y nada, cosa que me resulta muy raro.

muchas gracias por la respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.941
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por tincopasan (561 intervenciones) el 10/05/2020 13:46:33
hola:
no has contestado, pero supongo te está faltando mostrar el resultado:

1
print(result)

otra cosa, pone el archivo calendario o una carpeta más abajo o en la misma del script para no poner tanto path
no sé que querés hacer pero me parece mejor usar run() o en todo caso Popen()

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por Jesús (8 intervenciones) el 10/05/2020 23:44:49
Seguimos con el problema pero creo que hemos progresado algo, he añadido print (result) pero ahora me sale otro problema [errno 13] Permission denied. Ambos programas están en la misma carpeta y cuando ejecuto el programa calendario.py funciona sin problemas. Os dejo ambos programas por si acaso. Estoy usando python 3.7.3 con pixel OS. He probado con run y Popen y el resultado es el mismo.

1
2
3
import subprocess
result=subprocess.run('/home/pi/Programas_Py/calendario.py')
print(result)

y dejo el programa calendario

1
print("no funciona")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.941
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por tincopasan (561 intervenciones) el 11/05/2020 00:06:35
hola:
partamos de la base que cambiaste las instrucciones y no me voy a poner a mostrarte sobre run ni popen,etc para eso está la documentación.
Ahora, con tu ejemplo inicial:
1
Ambos programas están en la misma carpeta
bueno:
1
2
3
4
import subprocess
result=subprocess.getoutput('calendario.py')
print(result)
input() # pongo está línea porque no sé como funciona pixel OS ,pero lo obligo a esperar un enter, quizá no sea necesaria
primero probá así y comentá si anda.
sobre run, es para otro día, sino después te tengo que explicar popen, porque pensé que sabías como se usaban.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 22
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por Jesús (8 intervenciones) el 11/05/2020 15:13:08
Pues sigo sin conseguirlo, por lo menos algo estamos aprendiendo, run ejecuta un programa externo y deja el principal en pause, y con Popen puedo seguir con el programa principal.
Sigo con mi problema y he hecho varias pruebas.

1
2
3
mport subprocess
result = subprocess.getoutput(['/home/pi/Programas_Py', 'calendario.py'])
print(result)
Y me sale esto
1
calendario.py: 1: calendario.py: /home/pi/Programas_Py: Permission denied

también he probado esto.
1
2
3
import subprocess
result = subprocess.getoutput('calendario.py')
print(result)

Y me sale esto
1
/bin/sh: 1: calendario.py: not found

Y otra prueba más
1
2
3
import subprocess
result = subprocess.getoutput('/home/pi/Programas_Py/calendario.py')
print(result)

y sale esto.
1
/home/pi/Programas_Py/calendario.py: 1: /home/pi/Programas_Py/calendario.py: Syntax error: word unexpected (expecting ")")

Por útlimo calendario.py es esto que está en la misma carpeta que el programa princiapl. home/pi/Programas_Py
1
print ("no funciona")

También he descubierto en properties e dar acceso de escritura y ejecución a cualquiera así que sigo sin entender porque me deniega el acceso.

Más sugerencias? voy buscando por google pero tampoco encuentro mucha ayuda, es raro o no lo busco bien?
Saludos y muchísimas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.941
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por tincopasan (561 intervenciones) el 11/05/2020 15:39:52
No puedo ayudarte, el código que pasé, seguro funciona en windows, pero desconozco lo referente a linux, creo que tu versión es un derivado de ubuntu,así que quizá deberías buscar por ahí, sobre python,permisos,path,etc.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por Jesús (8 intervenciones) el 12/05/2020 01:41:38
Muchas gracias de todas formas, algo hemos avanzado. Estoy casi seguro que algo tiene que ver con los permisos, pero tanto los programas como la carpeta donde está alojada tiene permisos para cambiar contenido y ejecutar a cualquiera.

A ver si alguien de linux me arroja algo de luz, porque llevo un par de días mirando por google y no doy con la tecla.

Saludos y gracias a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar un programa python desde otro programa en python

Publicado por Costero (4 intervenciones) el 12/05/2020 02:25:35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1:)
import os;
print("\nMetodo 1")
os.system('python calendario.py')
 
 
# 2:)
print("\nMetodo 2")
from subprocess import call
call(["python", "calendario.py"])
 
 
# 3:)
print("\nMetodo 3")
import calendario
print("Mi nombre es: ", calendario.my_name())
 
 
# 4:)
print("\nMetodo 4")
import subprocess
result = subprocess.getoutput('python calendario.py')
print(result)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 127
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por Andrés (55 intervenciones) el 12/05/2020 02:34:41
../sample/main.py
../sample/child.py

main.py
1
2
3
4
5
6
#!/usr/bin/env python3
 
import subprocess
 
result = subprocess.Popen(('./child.py'))
print(result)

child.py
1
2
3
#!/usr/bin/env python3
 
print("Hello world")

chmod +x main.py
chmod +x child.py

./main.py
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 22
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Ejecutar un programa python desde otro programa en python

Publicado por Jesús (8 intervenciones) el 14/05/2020 03:24:06
Vaya!!!!! gracias por vuestras respuestas!!! finalmente funcionó. Finalmente he usado

1
subprocess.getoutput('python3 calendario.py')

Sin necesidad de un print, con una sola línea lo tengo todo arreglado!!!!!

Ahora que ya sé abrir otros programas de python (lo cual lo veo muy útil a la hora de organizarme) como podría abrir otro tipo de archivo??
En la misma carpeta tengo un PDF que abro con Qpdfview y siguiendo vuestros consejos intento hacer esto ...

1
subprocess.getoutput('qpdfview Luces de Bohemia.pdf')
o también ...
1
subprocess.call('qpdfview Luces de Bohemia.pdf')

Pero nada, desconozco si subprocess puede abrir otro tipo de archivos.
Muchas gracias por todo!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar