[英]Alias to python module
我有一些python模塊,我導入為:
from mygraph.draw import pixel
文件結構如下所示:
mygraph/
__init__.py
draw.py
和draw.py
包含def pixel()
現在,我想添加另一個函數line()
,我想將其導入為
from mygraph.draw import line
我可以簡單地添加line
到draw.py
但是,我想在一個單獨的文件line.py
中使用line()
而不要使用draw.py。 但是,如果我將它放在一個單獨的文件中,它將被導入為
from mygraph.line import line
那不是我想要的......
有可能以某種方式“別名” line.py
所以它在draw
模塊中可見,但是在separete文件中? 我想在draw
添加一個虛擬函數
def line():
return real_line.line()
但在這種情況下,我不會從原始line
獲得“docstring”,並且在調用實線函數時我將失去一些性能。
在draw.py
模塊中試試這個:
from line import line
你應該能夠以mygraph.draw.line
調用它,並按照你想要的方式導入它。
我在__init__.py
文件中做了很多這樣的事情:以這種方式公開主API。
這樣的結構對你來說更有意義:
mygraph/
__init__.py
draw/
__init__.py
pixel.py
line.py
然后在draw/__init__.py
你會得到這樣的代碼:
from mygraph.draw.pixel import pixel, redpixel, greenpixel
from mygraph.draw.line import line, redline, greenline
使用你的包很方便:
from mygraph.draw import redpixel, redline
注意循環進口。 例如,如果line
需要pixel
才能工作,並且你在line.py
import pixel
,則不能在pixel.py
進行import line
,因為你正在運行循環導入。
一種簡單的方法是將以draw.py
添加到draw.py
:
from line import line
在這種情況下,您也可以從draw.py
導入line
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.