簡體   English   中英

導入Python包時如何允許排除模塊?

[英]How to allow excluding a module when importing my Python package?

我寫了一個Python包pack ,可以執行一組相關任務, taskAtaskB ,..., 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.pysetup.py腳本,並專門從腳本內部刪除該模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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