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í