Importer des modules dans le répertoire de niveau supérieur
En python, le module d'importation recherchera sys.path sys.path est une liste, et nous pouvons modifier. cela de manière dynamique.
Pour importer un module dans un certain répertoire, nous utilisons sys.path.insert(0,somedir) pour ajouter le chemin de recherche puis importer.
Dans ce cas, si vous souhaitez importer le module dans le répertoire de niveau supérieur, vous pouvez utiliser sys.path.insert(0,parentdir).
Cependant, cette méthode d'écriture de chemins absolus ne fonctionnera pas si le fichier est placé ailleurs.
Utilisez donc la méthode dynamique pour obtenir le répertoire de niveau supérieur.
import os,sys parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0,parentdir)
Pourquoi utiliser sys.path.insert(0,parentdir) au lieu de sys.path.append(parentdir)
Parce que le chemin de recherche est parcouru, s'il y a un module avec le même nom dans d'autres chemins, une erreur d'importation se produira. Utilisez sys.path.insert(0,parentdir) pour vous assurer que ce chemin est recherché en premier.
Résoudre le problème de l'importation circulaire
En python, on rencontre souvent le problème de l'importation circulaire, c'est-à-dire l'importation circulaire.
Cette situation amusante se produit souvent dans la réalité.
Lors de l'installation d'une carte réseau sans fil, vous devez vous connecter en ligne pour télécharger le pilote de la carte réseau..
Lors de l'installation du logiciel de compression, le programme d'installation du logiciel de compression est téléchargé à partir du Internet est en fait compressé. Oui..
La dépendance circulaire est similaire à cette situation.
Par exemple,
est dans models.py,
from server import db class User(db.Model): pass
est dans server.py,
from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' db = SQLAlchemy(app) from models import User
Cela crée le problème de l’importation circulaire.
Il existe plusieurs manières principales de résoudre le problème de l’importation circulaire.
1. Importation paresseuse
Écrivez l'instruction d'importation dans une méthode ou une fonction pour limiter sa portée à une zone locale.
L'inconvénient de cette méthode est qu'il y aura des problèmes de performances.
2. Passer de xxx import yyy à import xxx;xxx.yyy pour accéder au formulaire
3 Organiser le code
Le problème de l'importation circulaire signifie souvent qu'il y a un problème avec la disposition du code. .
Les ressources concurrentes peuvent être fusionnées ou séparées.
Pour fusionner, écrivez-les simplement dans un seul fichier.
La séparation signifie extraire les ressources qui doivent être importées dans un fichier tiers.
En bref, cela transforme la boucle dans une seule direction.
Pour plus d'articles sur l'importation dans le module d'annuaire de niveau supérieur et les problèmes d'importation circulaire en Python, veuillez faire attention au site Web PHP chinois !