Je construis une Flask avec Python 3.5 à la suite d'un tutoriel, basé sur différentes règles d'importation. En cherchant des questions similaires, j'ai réussi à résoudre une erreur ImportError. basé sur l'importation d'un dossier imbriqué en ajoutant le dossier au chemin, mais je n'arrive toujours pas à importer une fonction à partir d'un script situé dans le même dossier (déjà dans le chemin). La structure du dossier est la suivante:
DoubleDibz
├── app
│ ├── __init__.py
│ ├── api
│ │ ├── __init__.py
│ │ └── helloworld.py
│ ├── app.py
│ ├── common
│ │ ├── __init__.py
│ │ └── constants.py
│ ├── config.py
│ ├── extensions.py
│ ├── static
│ └── templates
└── run.py
Dans app.py, j'importe une fonction de config.py en utilisant ce code:
import config as Config
mais je reçois cette erreur:
ImportError: No module named 'config'
Je ne comprends pas quel est le problème, étant les deux fichiers dans le même dossier. Merci d'avance
As-tu essayé
import app.config as Config
Cela a fait l'affaire pour moi.
Pour importer à partir du même dossier, vous pouvez faire:
from .config import function_or_class_in_config_file
ou pour importer la configuration complète avec l'alias comme vous l'avez demandé:
from ..app import config as Config
# imports all functions
import config
# you invoke it this way
config.my_function()
ou
# import specific function
from config import my_function
# you invoke it this way
my_function()
Si app.py n'est pas appelé du même dossier, vous pouvez le faire:
# csfp - current_script_folder_path
csfp = os.path.abspath(os.path.dirname(__file__))
if csfp not in sys.path:
sys.path.insert(0, csfp)
# import it and invoke it by one of the ways described above
Cela fonctionne pour moi:
from config import *