Digamos que este es el diseño de mi paquete
Package
:: core
:: hash
:: hashgen.py
:: validate.py
:: common
:: classes.py
:: tools
:: database_validate.py
:: bot.py
:: config.py
Entonces, si quisiera importar database_validate desde herramientas en bot.py, haría:
from tools import database_validate
Pero para core / hash / hashgen, ¿cómo importaría eso? Porque es un poco más largo. Sé que probablemente pueda poner todo en un archivo, pero tengo curiosidad por saber cómo hacer que se importe desde un diseño de carpeta más largo.
3 respuestas
Al crear un paquete, no olvide el __init__.py
. Esto debe estar en cada árbol desde el que desee importar. En su ejemplo, debería verse así ...
Package
__init__.py
:: core
__init__.py
:: hash
__init__.py
:: hashgen.py
:: validate.py
:: common
__init__.py
:: classes.py
:: tools
__init__.py
:: database_validate.py
:: bot.py
:: config.py
Una vez hecho esto, entonces puedes, como sugirió phihag
from package.core.hash.hashgen import *
Aunque no recomiendo usar * per se usado aquí por simplicidad.
Echa un vistazo a esto - ¡Escrito por el hombre mismo!
import core.hash.hashgen
Alternativamente, para un código más corto pero potencialmente confuso:
from core.hash import hashgen
# Don't forget hashgen now refers to a foreign module
from package.core.hash import hashgen
Su código debe estar en PYTHONPATH y debe tener archivos __init__.py
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.