393 votes

Importations de paquets frères

J'ai essayé de lire les questions sur les importations entre frères et soeurs et même la documentation du paquet mais je n'ai pas encore trouvé de réponse.

Avec la structure suivante :

 LICENSE.md
 README.md
 api
    __init__.py
    api.py
    api_key.py
 examples
    __init__.py
    example_one.py
    example_two.py
 tests
    __init__.py
    test_one.py

Comment les scripts dans les examples y tests importés des répertoires api et être exécuté à partir de la ligne de commande ?

Aussi, j'aimerais éviter l'horrible sys.path.insert hack pour chaque fichier. Sûrement cela peut être fait en Python, non ?

-3voto

Tout d'abord, vous devez éviter d'avoir des fichiers portant le même nom que le module lui-même. Cela peut casser d'autres importations.

Lorsque vous importez un fichier, l'interprète vérifie d'abord le répertoire courant, puis recherche les répertoires globaux.

À l'intérieur de examples o tests vous pouvez appeler :

from ..api import api

-3voto

Achyut Pal Points 1
  1. Projet

1.1 Utilisateur

1.1.1 about.py

1.1.2 init .py

1.2 Tech

1.2.1 info.py

1.1.2 init .py

Maintenant, si vous voulez accéder about.py module en el Paquet utilisateur à partir du info.py module en Pack technologique alors vous devez amener le chemin d'accès cmd (dans Windows) au projet, c'est-à-dire ** C:\Users\Personal\Desktop\Project >**comme dans l'exemple du paquet ci-dessus. Et à partir de ce chemin, vous devez entrer, python -m nom_du_paquet.nom_du_module Par exemple, pour le paquet ci-dessus, nous devons faire,

C:\Users\Personal\Desktop\Project >python -m Tech.info

Points Imp

  1. N'utilisez pas l'extension .py après module d'information i.e. python -m Tech.info.py
  2. Entrez dans ce cas, où les paquets de frères et sœurs sont au même niveau.
  3. -m est le drapeau, pour le vérifier, vous pouvez taper dans la cmd python --help

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X