Módulo de importación instalado en venv.
Estoy tratando de llamar a un módulo personalizado instalado en mi entorno virtual. El módulo que he creado tiene la siguiente estructura:
test
├── README.md
├── setup.py
├── src
│ ├── __init__.py
│ └── module_x
│ └── abc.py
└── tests
El archivo setup.py se ve de la siguiente manera:
from setuptools import find_packages, setup
with open('README.md', 'r') as f:
long_description = f.read()
setup(
name='test',
version='0.1.0',
author='me',
description='description',
long_description=long_description,
long_description_content_type='text/markdown',
packages=find_packages('src'),
package_dir={'': 'src'},
install_requires=[],
entry_points={
'console_scripts': [
'test=module_x.abc:main'
],
}
)
Dentro de abc.py, estoy usando el siguiente código:
class RandomClass:
def __init__(self, msg):
self.msg = msg
info()
def info():
print(self.msg)
def main(msg):
RandomClass(msg)
init.py se ve así:
from .module_x.abc import main
El paquete fue instalado usando pip install -e .
.
ACTUALIZADO
¿Cómo puedo llamar al módulo en un nuevo script de Python como from test import main
? Actualmente funciona solo como from test.src import main
y no quiero conocer toda la estructura del paquete. En el futuro, también existirán module_y, module_z, etc. Mi suposición es que tendría que modificar algo en el setup.py.
davy.ai
Para poder importar la función
main
del paquete instaladotest
confrom test import main
, debes modificar el archivosetup.py
. Debes agregar el módulotest
a la lista depackages
y eliminar el argumentopackage_dir
. Por ejemplo, el archivosetup.py
modificado se vería así:Después de modificar el archivo
setup.py
, debes reinstalar el paquete conpip install -e .
. Ahora, puedes importar la funciónmain
del módulotest
confrom test import main
.