Premier coup d'œil à la structure des répertoires de mon package :
Le nom du package le plus externe est Msgnew, qui contient un fichier init. Il existe un module appelé get et un sous-package appelé Msg. Entrez le sous-package Msg et vous pouvez voir qu'il existe également un fichier init et qu'il y en a. Il contient 2 modules, l'un s'appelle Sendmsg et l'autre s'appelle module Receiver
.Je souhaite maintenant importer le module Sendmsg dans le sous-package et utiliser l'une de ses fonctions
Au fait, permettez-moi de vous présenter le module Sendmsg, qui a en fait trois fonctions, comme le montre la figure :
Le code du processus d'importation est le suivant :
# -*- coding:gb2312 -*-
# 代码1
from Msgnew import Msg
Msg.Sendmsg.test1()
# 代码2
#from Msgnew.Msg import Sendmsg
#Sendmsg.test1()
Voici le code 1 et le code 2
Le résultat de l'exécution du code 1 est le suivant :
Commentez ensuite le code 1 puis exécutez le code 2. Le résultat est le suivant :
Je ne comprends pas beaucoup cela,
Les deux morceaux de code dans la case rouge ne sont-ils pas équivalents ?
À mon avis, ces deux devraient signifier la même chose. Pourquoi l’un a-t-il tort et l’autre raison ?
Bien qu'il s'agisse tous de sous-modules, leur logique d'implémentation est en réalité différente, ce qui conduit au fait que l'importation finale doit être un
Python
文件,而并非一个模块目录,所以代码二中import Sendmsg
部分才是真正的引入了这个Python文件,而前面的from Msgnew.Msg
qui indique à l'analyseur où trouver le fichier Sendmsg.Je sais où réside le problème que j'ai rencontré.
Lorsque l'importation n'est pas un module mais un package, si vous souhaitez importer directement les modules à l'intérieur ensemble, vous devez écrire dans le fichier init du package :
Comme le montre l'image :
La prochaine fois que vous l'exécuterez, ce sera un succès !