Aquí está la estructura de directorios:¿Cómo importo un script de Python desde un directorio hermano?
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
¿Cómo se importan bar.py en foo.py?
Aquí está la estructura de directorios:¿Cómo importo un script de Python desde un directorio hermano?
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
¿Cómo se importan bar.py en foo.py?
Si todos los directorios que se producen son Python paquetes, es decir, todos ellos contienen __init__.py
, entonces usted puede utilizar
from ..bar_dir import bar
Si los directorios no son paquetes de Python, puede hacer esto por jugar un poco con sys.path
, pero no deberías.
esto no funcionará si desea importar en un paquete no y simplemente ejecuta una pitón de un hermano. En este caso, sys.path.append es el camino a seguir – mhstnsc
@mhstnsc Diría que en este caso ha hecho algo mal, pero si se trata de un guión hacky, podría estar bien con 'sys.path'. –
No está mal, pero cuando se ejecuta el módulo principal no se pueden realizar importaciones relativas. https://www.python.org/dev/peps/pep-0366/ – mhstnsc
Puede usar los módulos sys
y os
para las importaciones generalizadas. En foo.py
comienzo con las líneas
import sys
import os
sys.path.append(os.path.abspath('../bar_dir'))
import bar
Ver: https://stackoverflow.com/questions/6323860/sibling-package-imports/27878845#27878845 –