[英]How to properly build package to use a function without module name when importing the module?
[英]How to use alias of a long python module package without really importing it?
我需要從長名稱模塊路徑導入幾個模塊:
import a.b.c.d.m1 as m1
import a.b.c.d.m2 as m2
import a.b.c.d.m3 as m3
我只能寫一次長名稱,如下所示:
import a.b.c.d as d
m1 = d.m1
m2 = d.m2
m3 = d.m3
但是這樣,包 d 就完全導入了,這是我不想要的。
有沒有辦法只使用某些東西來“記住”模塊路徑,而無需真正導入它。 因此,稍后我們可以輕松導入其子模塊。
alias d = a.b.c.d
from d import m1
from d import m2
from d import m3
從我從您的問題中了解到的部分來看,您似乎需要這樣的東西:
from abcd import m1,m2,m3
當逗號可以完成工作時,為什么要使用復雜的東西?
嗯,什么意思
包 d 是完全導入的,我不想要
當你執行
from a.b.c.d import m1
導入機制會導入所有父包,這意味着這里a
、 ab
、 abc
、 abcd
將它們添加到sys.module
緩存中,並且只將m1
添加到您的全局變量列表中。
所以如果你寫:
from a.b.c import d
from d import m1
當您與前一種情況進行比較時,您導入相同的包並且只添加對全局變量列表的d
引用。
所以你想要的別名機制沒有包含在語言中,因為它感覺不夠有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.