1
votes

Correct pour importer la classe de module python

Structure du projet Python:

src/
  - package-name/
     -- A/
         ---B/
               b1.py
         ---C/
               c1.py

Dans c1.py , il utilise une fonction définie dans b1.py . J'essaye 2 manières:

Méthode1: de src.package-name.A.B.b1 import b1_func Méthode 2: à partir de ..B.b1 import b1_func

Le module d'importation démarre à partir du répertoire package-name , donc src / code > ne sera pas visible dans le module importé. Donc, la méthode 1 ne fonctionne pas lors de l'importation de mon propre module.

La méthode 2 ne fonctionne pas lorsqu'elle est exécutée dans l'IDE. ValueError: tentative d'importation relative au-delà du package de niveau supérieur

Des suggestions? merci.


0 commentaires

3 Réponses :


0
votes

Avez-vous des fichiers __init__.py dans A et B? Il peut être intéressant d'importer correctement b1_func dans les fichiers d'initialisation de B puis de A.

B __init__.py

from B import b1_func

ou autre p >

et A __init__.py

from .b1_file import b1_func

Ensuite, vous devriez pouvoir importer ..b1_func p>


0 commentaires

0
votes

Je change la "Content Root" dans le répertoire du nom du package dans PyCharm et import package-name.B.b1 . Cela fonctionne.


0 commentaires

0
votes

suivez ces étapes pour importer les packages où vous voulez

  1. Tout d'abord, ajoutez __init__.py dans tous les dossiers

ie : __init__.py dans src et __init__.py dans le package et __init__.py dans A et __init__.py en B et __init__.py en C .

  1. Si vous souhaitez importer les fonctions de b1.py dans c1.py ajoutez ces lignes dans le fichier c1.py . li>
import sys
sys.path.append(“../”)

#if u want from src folder add ../../

from B.b1 import YourFunctionName


0 commentaires