簡體   English   中英

在我的模塊中導入一次外部包,而不將其添加到命名空間

[英]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 pdfrom .. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM