python - how - notebook 5.4 0 requires ipykernel which is not installed
¿Cómo importo el módulo en el directorio del cuaderno jupyter a los cuadernos en los directorios inferiores? (1)
Esta pregunta ya tiene una respuesta aquí:
He usado el cuaderno jupyter para el análisis de datos desde hace bastante tiempo. Me gustaría desarrollar un módulo en mi directorio de notebooks jupyter y poder importar ese nuevo módulo en notebooks. El directorio de archivos de mi cuaderno jupyter se puede representar de la siguiente manera;
Jupyter notebooks/
notebook1.ipynb
new_module/
__init__.py
newfunction.py
currentnotebooks/
notebook2.ipynb
Cuando uso import new_module
en notebook1.ipynb, funciona. Sin embargo, cuando intento el mismo comando en notebook2.ipynb, obtengo el siguiente ImportError: No module named ''new_module''
. Las dos soluciones obvias son A) mover new_module al directorio actual de libros de notas o B) mover notebook2.ipynb al mismo nivel que new_module. No quiero perder el tiempo con la estructura de archivos. es posible?
new_module
asegurarse de que el directorio principal de new_module
esté en su ruta de python. Para un cuaderno que está un nivel por debajo de new_module
, este código hará el truco:
import os
import sys
nb_dir = os.path.split(os.getcwd())[0]
if nb_dir not in sys.path:
sys.path.append(nb_dir)
Si está más abajo en la jerarquía de directorios, deberá ajustar la forma en que se establece nb_dir
, pero eso es todo. No debe ejecutar este código para un cuaderno en los cuadernos Jupyter notebooks
, ya que agregaría el padre de ese directorio a la ruta de acceso de python, lo que probablemente no sea deseable.
La razón por la que la importación funciona para notebook1
es que sys.path contiene ''''
(la cadena vacía), que es siempre el directorio actual del intérprete en ejecución (kernel, en este caso). Una búsqueda en Google para explain python path
de python sys.path
varias explicaciones de cómo Python usa PYTHONPATH
(también sys.path
como sys.path
).