[英]How to allow excluding a module when importing my Python package?
我寫了一個Python包pack
,可以執行一組相關任務, taskA
, taskB
,..., taskZ
。 它們每個都有自己的模塊文件,例如taskN.py
。
現在說在taskN.py
我導入了第三方軟件包evilpack
。 它可以在My Machine™上運行,但是我的一個同事(a)無法安裝evilpack
,但是(b)甚至不需要該模塊taskN
。
我的目標是構建程序包,以便我們可以在導入時選擇是加載模塊taskN
還是忽略它。
解決這個問題的最優雅的方法是什么? 我感覺到它與目錄的__init__.py
文件有關。
解決此問題的簡單方法:
確定所有可能具有未實現依賴性的模塊。
在執行導入的主模塊中,用try...except
子句將每個此類導入括起來:
try:
import packN
except ImportError as details:
print ("Could not import packN because of this error:", details)
print ("Functionality xxxx will not be available")
packN = None
如果您同事的代碼沒有調用依賴於packN
的函數,那么一切都會很好。
我認為我只能通過setupscript指向正確的方向,因為我無權訪問您的數據/軟件包詳細信息。
簡而言之,您將必須找到taskN.py
的setup.py
腳本,並專門從腳本內部刪除該模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.