覆沉

聊聊Python包和相對導入
by renyuneyun, post on Fri 29 May 2020

今天嘗試將一個代碼庫拆分成若干模塊(準確用語應該是「」),目標可以說既典型又不典型:從邏輯上說,代碼分爲三塊,其中一塊是共享的。

很理所當然的,我會將其拆分爲A、B、C三個目錄,然後試圖從A和B中導入C。於是也很理所當然的,我期望可以直接進行相對導入。然而這時候就有了問題,也是我走了許多彎路,浪費了很多時間的原因所在。

爲了避免自己再犯錯,也爲了以後可以隨手發給別人,寫這麼一篇簡要但不減省地介紹和解釋一下Python導入相關的話題。

我的需求

首先,我的大前提就是不要去魔改sys.pathPYTHONPATH環境變量。

抽象出來,我的目標目錄結構大概是這樣:

my_code
├── common
│   └── shared.py
├── server
│   ├── app.py
│   ├── lib1.py
│   └── lib2.py
└── user_lib
    └── lib.py

其中server/user_lib/都會用到common …

Read in 1 mins