Je souhaite utiliser un setup.py
qui importe à partir d'un script qui fait partie du package à installer. Ce script contient uniquement un dict
qui contient les chaînes permettant de créer des points d'entrée. Je ne les ai pas codé en dur dans le setup.py
parce que je veux utiliser cette liste plus tard à partir du paquet installé.Importer un script à partir d'un package dans le fichier setup.py
Juste pour ma garde ici structure des répertoires et des fichiers importants:
PackageA
|_package_a
| |_models
| |_modules
| | |_do_query.py
| | |_...
| |_setup_cfg.py
| |_ __init__.py
| |_...
|_ __init__.py
|_setup.py
__init__.py
dans package_a
:
from .setup_cfg import setup_config
setup_cfg.py
:
setup_config = {
'scripts': [
'do_query'
]
}
setup.py
:
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
from .package_a import setup_config
with open('README.rst') as f:
readme = f.read()
with open('LICENSE') as f:
license = f.read()
setup(
...,
entry_points={
'console_scripts': ['{}=package_a.modules.{}:main'.format(script, script) for script in setup_config.get('scripts')]
},
)
je peux faire l'importation from .package_a import setup_config
et PyCharm résout cette importation correctement. Cependant, si je tente d'installer le paquet via pip3 install .
il échoue avec ModuleNotFoundError: No module named '__main__.package_a'; '__main__' is not a package
(nous utilisons pip
au lieu de python setup.py install
que nous voulons avoir l'ensemble dossier source installée dans le site-packages au lieu d'une version embarquée)
Quelqu'un peut-il expliquer moi cette exception ou fournir un moyen approprié pour réaliser une telle configuration? (Le dict en setup_config.py
doit être accesible de setup.py
et lors de l'importation du paquet installé.
vous essayez d'importer tout '' 'depuis le répertoire. vous pouvez utiliser cette méthode d'importation dans un fichier uniquement. c'est-à-dire que vous pouvez utiliser 'from .package_a.modules._do_query import *' – Gahan
Désolé, déjà corrigé celui-ci mais posté incorrect. Je l'ai corrigé. Même exception quand même. – Igle