web-dev-qa-db-fra.com

fonction d'importation d'un fichier dans le même dossier

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

21
Zemian

As-tu essayé

import app.config as Config

Cela a fait l'affaire pour moi.

24
macdrai

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
12
Juju
# 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
3
stefan.stt

Cela fonctionne pour moi:

from config import *
1
Omar Cusma Fait