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?
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:
Seperti yang ditunjukkan dalam gambar:
Kali seterusnya anda melaksanakannya, ia akan berjaya!