python - mac - Ocultar módulos de implementación y submódulos en paquete
upgrade pip windows (1)
Puede ocultar las partes internas del módulo de una importación al subrayar el nombre del módulo:
_su nombre de módulo está aquí.
E: también puede definir __all__ en el __all__ del paquete - solo los nombres de los módulos de __all__ se importarán a través de la importación *.
Quiero empaquetar mi código para exponer solo las funciones principales. Mi directorio es así:
./
setup.py
my_module/
__init__.py
public_functions.py
internal_modules/
__init__.py
A.py
B.py
other_modules.py/
__init__.py
C.py
En public_functions sí importo algunas operaciones de internal_modules.A pero NO de internal_modules.B , y tanto A.py como B.py usan algunas funciones de C.py
Mi setup.py es el siguiente:
from setuptools import setup
setup(name=''my_module'',
version=''0.1'',
description=''my_awesome_module'',
author=''Me'',
author_email=''[email protected]'',
license=''MIT'',
packages=[''my_module''],
zip_safe=False)
Quiero instalarlo con pip, pero no quiero dejar ninguno de mis archivos internal_modules visibles desde mi paquete una vez que esté instalado.
Podría instalarlo correctamente, pero cuando lo haga
from my_module import public_module
arroja ImportError: no module named internal_modules.A en la primera línea de public_module.py .
Sé que puedo solucionarlo si agrego my_module.internal_modules a mi declaración setup.py como otro paquete, pero esto permitirá que mis internal_modules A.py con A.py y B.py visibles desde el paquete instalado.
Encontré una pregunta similar aquí pero no funciona para mí