J'ai besoin d'aide sur la façon d'organiser la source dans un paquet python - J'ai déjà suivi plusieurs tutoriels sur le web (en particulier this one) sur la façon de le faire, mais ce n'est pas travailler comme expliqué et comment je l'ai imaginé. Je veux créer un package python nommé binaryio
. Il devrait offrir deux classes nommées BinaryReader
et BinaryWriter
que je veux que les utilisateurs soient en mesure d'importer avec__init__.py ne trouve pas les modules dans le même répertoire
from binaryio import BinaryReader
from binaryio import BinaryWriter
Ainsi j'ai créé mon dépôt et la structure de répertoire package comme suit:
- binaryio (racine du référentiel)
- binaryio (racine de package)
- __init__.py (art. ci-dessous)
- binaryreader.py (contient la classe
BinaryReader
) - binarywriter.py (contient la classe
BinaryWriter
)
- setup.py (contient l'appel
setuptools.setup
) - .gitignore, README.md, LICENCE , ...
- binaryio (racine de package)
Comme vous pouvez le voir, les classes sont dans des fichiers séparés que je suis habitué à ce (provenant d'un C# arrière-plan). Je ne suis pas sûr que ce soit une bonne idée parce que les modules sont les "unités" en Python - mais sinon, encombrer toutes les classes en un seul gros fichier ne me semblait pas logique.
__init__.py se présente comme suit pour importer ces classes, ce qui (comme je l'ai compris) le from binaryio import BinaryReader
d'éventuelles importations pour les utilisateurs plus tard:
from binaryreader import BinaryReader
from binarywriter import BinaryWriter
Cependant, quand j'installer le paquet localement (qui semble fonctionner correctement) et essayer de import binaryio
, je reçois l'erreur suivante:
>>> import binaryio
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Projects\Git\binaryio\binaryio\__init__.py", line 1, in <module>
from binaryreader import BinaryReader
ModuleNotFoundError: No module named 'binaryreader'
Apparemment, quelque chose ne va pas avec mon __init__.py fichier. Je ne comprends pas cela, comme un fichier binaryreader.py fichier aka existe dans le même dossier que vous pouvez voir ci-dessus. Curieusement, mon IDE (PyCharm, ayant défini la racine du paquet en tant que dossier source) ne se plaint pas des instructions qu'il contient et peut résoudre toutes les références.
Qu'est-ce que je fais mal ici? Selon le tutoriel lié ci-dessus, mettre un fichier dans xyz.py avec une classe nommée Abc
et puis écrire from xyz import Abc
en __init__.py devrait fonctionner, mais apparemment ce n'est pas pour moi.
Installer le paquet localement = en utilisant des outils de conditionnement ou juste déballer? – bakatrouble
@bakatrouble Dans la racine du dépôt, j'ai lancé 'pip install .', puis j'ai essayé de l'importer en mode interactif. –