Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

937
Vistas
¿Cómo ejecutar un archivo * .PY desde un archivo * .IPYNB en el cuaderno Jupyter?

Estoy trabajando en un Python Notebook y me gustaría que el código de entrada grande [input] se empaquete en archivos [* .PY] y llame a estos archivos desde el notebook .

Conozco la acción de ejecutar un archivo [.PY] desde el portátil y el comando varía entre Linux o Windows. Pero cuando realizo esta acción y ejecuto el archivo [.PY] desde el cuaderno, no reconoce ninguna biblioteca o variable existente cargada en el cuaderno (es como si el archivo [ .PY] comenzara desde cero...).

¿Hay alguna forma de arreglar esto?

Un posible ejemplo simplificado del problema sería el siguiente:

 In[1]: import numpy as np import matplotlib.pyplot as plt In[2]: def f(x): return np.exp(-x ** 2) In[3]: x = np.linspace(-1, 3, 100) In[4]: %run script.py

Donde " script.py " tiene el siguiente contenido:

 plt.plot(x, f(x)) plt.xlabel("Eje $x$",fontsize=16) plt.ylabel("$f(x)$",fontsize=16) plt.title("Funcion $f(x)$")
  • En el problema real, el archivo [* .PY] no tiene 4 líneas de código, tiene bastantes más.
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En la documentación de %run magic puedes encontrar:

-ejecuto el archivo en el espacio de nombres de IPython en lugar de uno vacío. Esto es útil si está experimentando con código escrito en un editor de texto que depende de variables definidas de forma interactiva.

Por lo tanto, proporcionar -i hace el truco:

 %run -i 'script.py'

La forma "correcta" de hacerlo

Tal vez el comando anterior es justo lo que necesita, pero con toda la atención que recibe esta pregunta, decidí agregarle algunos centavos más para aquellos que no saben cómo sería una forma más pitónica.
La solución anterior es un poco complicada y hace que el código en el otro archivo sea confuso (¿De dónde viene esta variable x ? ¿Y cuál es la función f ?).

Me gustaría mostrarle cómo hacerlo sin tener que ejecutar el otro archivo una y otra vez.
Simplemente conviértalo en un módulo con sus propias funciones y clases y luego impórtelo desde su computadora portátil o consola Jupyter. Esto también tiene la ventaja de hacerlo fácilmente reutilizable y el asistente de contexto de jupyters puede ayudarlo con el autocompletado o mostrarle la cadena de documentación si escribió una.
Si está editando constantemente el otro archivo, entonces autoreload viene en su ayuda.

Su ejemplo se vería así:
guión.py

 import matplotlib.pyplot as plt def myplot(f, x): """ :param f: function to plot :type f: callable :param x: values for x :type x: list or ndarray Plots the function f(x). """ # yes, you can pass functions around as if # they were ordinary variables (they are) plt.plot(x, f(x)) plt.xlabel("Eje $x$",fontsize=16) plt.ylabel("$f(x)$",fontsize=16) plt.title("Funcion $f(x)$")

consola jupyter

 In [1]: import numpy as np In [2]: %load_ext autoreload In [3]: %autoreload 1 In [4]: %aimport script In [5]: def f(x): : return np.exp(-x ** 2) : : In [6]: x = np.linspace(-1, 3, 100) In [7]: script.myplot(f, x) In [8]: ?script.myplot Signature: script.myplot(f, x) Docstring: :param f: function to plot :type f: callable :param x: x values :type x: list or ndarray File: [...]\script.py Type: function
over 4 years ago · Santiago Trujillo Denunciar

0

las siguientes líneas también funcionarían

 !python script.py
over 4 years ago · Santiago Trujillo Denunciar

0

Tal vez no sea muy elegante, pero hace el trabajo:

 exec(open("script.py").read())
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda