Tengo el siguiente paquete (y directorio de trabajo):
WorkingDirectory-- |--MyPackage-- | |--__init__.py | |--module1.py | |--module2.py | |--notebook.ipynb En __init__.py tengo:
import module1 import module2Si trato de importar MyPackage en mi cuaderno:
import MyPackage as mp ModuleNotFoundError: No module named 'module1' . Pero la importación funciona bien si ejecuto el script fuera de un cuaderno: si creo test.py en el mismo directorio y hago lo mismo que en el cuaderno, la importación funcionará correctamente. Funcionará dentro del cuaderno si uso un nombre completo en __init__.py ( import MyPackage.module1 ).
¿Cuál es el motivo del diferente comportamiento de importación?
He confirmado que el directorio de trabajo del cuaderno es WorkingDirectory .
---Actualizar---------
El error exacto es:
C:\Users\Me\Documents\Working Directory\MyPackage\__init__.py in <module>() ---> 17 import module1 ModuleNotFoundError: No module named 'module1'Mi problema difiere del posible duplicado:
El portátil pudo encontrar el paquete, pero solo no pudo cargar el módulo. Esto se infirió al sustituir module1 con MyPackage.module1 funcionó bien y sugiere que puede no ser un problema relacionado con PATH .
Entré en WorkingDirectory e inicié el servidor allí. El directorio de trabajo debe ser la carpeta que contiene mi paquete.
Estoy bastante seguro de que este problema está relacionado y la respuesta allí lo ayudará: https://stackoverflow.com/a/15622021/7458681
tl; dr, el cwd del servidor portátil es siempre la ruta base donde inició el servidor, sin importar si estaba ejecutando import os os.getcwd() dice. Utilice import sys sys.path.append("/path/to/your/module/folder") .
Lo ejecuté con algunos módulos ficticios en la misma estructura que había especificado, y antes de modificar sys.path no funcionaba y después lo hacía.
dos líneas de código resolverán esto,
#list the current work dir os.getcwd() #change the current work dir os.chdir()cambie la ruta e importe el módulo, diviértase.
si no se encuentra el módulo en el entorno jupyter , debe instalarlo en el entorno jupyter en lugar de instalarlo en el símbolo del sistema
por este comando (para Windows) en jupyter
después de eso, puede importarlo y usarlo fácilmente. Siempre que quiera decirle a jupyter que este es un comando del sistema, debe poner (!) Antes de su comando.