[Python Newbie] Tanya soalan tentang mengimport pakej bersarang
phpcn_u1582
phpcn_u1582 2017-06-30 09:54:57
0
2
793

Pertama lihat struktur direktori pakej saya:

Nama pakej paling luar ialah Msgnew, yang mengandungi fail init Terdapat modul yang dipanggil get dan sub-pakej yang dipanggil Msg 2 modul di dalamnya , satu dipanggil Sendmsg, dan satu lagi dipanggil modul Receivemsg

Saya kini ingin mengimport modul Sendmsg dalam sub-pakej dan menggunakan salah satu fungsinya
Sebenarnya, izinkan saya memperkenalkan modul Sendmsg, yang sebenarnya mempunyai tiga fungsi, seperti yang ditunjukkan dalam rajah:

Kod untuk proses import adalah seperti berikut:

# -*- coding:gb2312 -*-
# 代码1
from Msgnew import Msg
Msg.Sendmsg.test1()

# 代码2
#from Msgnew.Msg import Sendmsg
#Sendmsg.test1()

Berikut ialah kod 1 dan kod 2
Hasil pelaksanaan kod 1 adalah seperti berikut:

Kemudian komen keluar kod 1 dan kemudian jalankan kod 2. Hasilnya adalah seperti berikut:

Saya tidak faham sangat ini,


Adakah dua keping kod dalam kotak merah tidak setara?
Pada pendapat saya, kedua-dua ini sepatutnya membawa maksud yang sama. Kenapa satu salah dan satu lagi betul?

phpcn_u1582
phpcn_u1582

membalas semua(2)
大家讲道理

Walaupun kesemuanya adalah sub-modul, logik pelaksanaannya sebenarnya berbeza, yang membawa kepada fakta bahawa import akhir mestilah Python文件,而并非一个模块目录,所以代码二中import Sendmsg部分才是真正的引入了这个Python文件,而前面的from Msgnew.Msg yang memberitahu penghurai di mana untuk mencari fail Sendmsg.

某草草

Saya tahu di mana terletaknya masalah yang saya hadapi.
Apabila mengimport bukan modul tetapi pakej, jika anda ingin mengimport terus modul di dalam bersama-sama, anda mesti menulis dalam fail init pakej:

__all__ = ["Sendmsg","Receivemsg"]

from . import Sendmsg
from . import Receivemsg

Seperti yang ditunjukkan dalam gambar:

Kali seterusnya anda melaksanakannya, ia akan berjaya!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan