簡體   English   中英

如何處理Python中子模塊的相互依賴性?

[英]How to deal with submodule interdependency in Python?

我有一個帶有幾個子模塊的程序。 我希望子模塊可以獨立使用,以便我也可以在其他程序中使用其中的一些子模塊。 但是,子模塊具有相互依賴性,需要彼此之間的各個方面才能運行。 解決這個問題最少的方法是什么?

現在,我的程序結構如下:

myapp/
|-- __init__.py
|-- app.py
|-- special_classes
|   |-- __init__.py
|   `-- tools
|       `-- __init__.py
|-- special_functions
|   |-- __init__.py
|   `-- tools
|       `-- __init__.py
`-- tools
    |-- __init__.py
    |-- classes.py
    `-- functions.py

其中每個子模塊都是其父級的git submodule

這樣做的好處是我可以獨立管理和開發每個子模塊,並且將這些子模塊之一添加到新項目中就像git clone ing和git submodule add它一樣簡單。 因為我在一個托管的共享計算環境中工作,所以這也使運行程序變得容易,因為用戶環境管理和軟件版本控制及安裝是有爭議的問題。

缺點是,在此示例中,我現在擁有3個tools子模塊副本,它們彼此獨立,並且每當它們中的任何一個發生更改時都必須手動進行更新。 在子模塊上進行任何類型的開發都非常麻煩。 同樣,由於每個子模塊都運行測試,並且tools模塊有3個副本,因此它現在使我運行的單元測試的數量增加了兩倍。

我已經看到了各種導入方法,例如這里提到的那些方法,但這似乎並不是理想的解決方案。

我已經在此處閱讀了有關如何創建正式的Python程序包的信息,但這似乎是一項艱巨的任務,並且會使最終用戶實際安裝和運行該程序更加困難。

在這里問另一個相關的問題

最好在父級中只有一個工具,然后將其導入子模塊。 到目前為止對我來說感覺最好。

暫無
暫無

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

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