我是Python軟件包的新手,並且我正在努力工作。我有3個套餐:engine
,ui
和db
。我想從另外兩個軟件包中使用db
。什麼是正確的方法呢?從兩個其他軟件包(python3)導入一個通用軟件包
我不想安裝db
包,因爲我目前正在同時開發3個包。
謝謝!
就目前而言,我試圖用鄰近的包的進口這樣做,但它吸收這麼多,我不知道這是這樣做的正確方法。 這個問題是密切相關的噸問題,如Relative imports in Python 3或ValueError: attempted relative import beyond top-level package,但他們都沒有一個有效的,爲我工作:-(
這裏的答案是我到目前爲止有:
src/
__init__.py # empty file (is it useful?)
db/
__init__.py # empty file
constants.py
ui/
__init__.py # empty file
index.py
engine/
...some stuff...
這裏是index.py:
from .. import db
print(db.constants.stuff)
但是,運行cd ui && python3 index.py
或python3 -m index.py
失敗SystemError: Parent module '' not loaded, cannot perform relative import
當我調整這個項目,我有時會得到其他的錯誤,如ValueError: Attempted relative import in non-package
從我讀的https://docs.python.org/3/tutorial/modules.html,這應該工作,不應該嗎?
我在做什麼錯?我應該做些什麼(做這麼簡單的事情)使用來自其他兩個軟件包的通用軟件包?
你能用'tree'來分享整個項目結構嗎?因爲當前信息僅顯示每個包的實際文件。也許你對包和模塊感到困惑? – Arunmozhi
這是實際的當前結構('engine'目前是空的,但最終需要'db'的東西)。所以是的,我現在每個包裝都有一個模塊。但包很快會增長 – Daladim