[英]Importing external package once in my module without it being added to the namespace
對於因為無法更輕松地回答我的問題,我深表歉意。 我正在編寫一個大包,幾乎在每個函數中都廣泛使用pandas。 當然,我的第一直覺是創建一個__init__.py
import pandas
# then import my own submodules and other things
然后,每次我在函數中使用pandas時,請從子模塊中調用它from . import pandas as pd
from . import pandas as pd
或from .. import pandas
,或類似的東西。
但是,如果我這樣做,當我加載我的包時,pandas顯示為“子模塊”,即有一個mypackage.pandas
。 哪個不傷害任何人,但我猜是不正確的。 避免這種情況的一種方法是在__init__.py
的末尾添加del pandas
,這似乎也不是正確的方法。
所以從現在開始,我不會在我的__init__
導入pandas並在每個函數中單獨導入它,這樣可以正常工作,但是過於重復並且阻止我設置全局pandas設置。
這里的首選方法是什么? 有沒有我失蹤的方法?
謝謝。
...通過從
__init__.py
調用中import
pandas
,我可以在那里定義一些pandas
的選項(如pandas.options.display.expand_frame_repr
),它將在整個模塊中有效。
他們無論如何都會。 該模塊僅在您第一次調用import pandas
時加載。 此時,對模塊的引用存儲在可通過sys.modules
訪問的模塊字典sys.modules
。 在任何其他模塊中import pandas
任何后續調用都將重新使用sys.modules
的相同引用,因此您更改的任何選項也將適用。
此外,在我看來,從頭開始重新導入相同的包需要更長的時間,但我不確定它是否正確。
它實際上應該稍微快一點,因為它不必解析相對路徑。 加載模塊后,后續調用就像......
import pandas # pandas = sys.modules['pandas']
import pandas as pd # pd = sys.modules['pandas']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.