[Python Newbie] Interrogé sur l'importation de packages imbriqués
phpcn_u1582
phpcn_u1582 2017-06-30 09:54:57
0
2
792

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 ?

phpcn_u1582
phpcn_u1582

répondre à tous(2)
大家讲道理

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 :

__all__ = ["Sendmsg","Receivemsg"]

from . import Sendmsg
from . import Receivemsg

Comme le montre l'image :

La prochaine fois que vous l'exécuterez, ce sera un succès !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal