[英]Python Relative import from parent directory when current script needs to run a main file
我正在處理我們具有以下目錄結構的代碼
base dir
|
--J
| |--C
| | |--H
| | | |--M_task.py
| | |
| | |--C_task.py
| | |
| | |--A_task.py
|
所有文件夾都是包。
我有兩個要求:
from H.M_task import method
在第二種情況下,我面臨幾個問題。
當我在本地機器上運行代碼時可以使用絕對導入,但在部署代碼時將無法使用絕對導入。 所以這是毫無疑問的。
僅當我僅將 M_task 用作模塊時,才使用from..C_task import method
。 但在某些情況下,我需要使用主 function 將 M_task 作為腳本運行。 在這種情況下,M_task 沒有父文件夾,因此相對導入不起作用。
最后的手段是將父文件夾附加到sys.path
。 但我想盡可能避免這種解決方案。 有沒有一種更清潔的方法可以實現我想要在這里實現的目標?
運行你想要的任何東西的正確方法是從base dir
- 所以
$ cd "/path/to/base dir"
$ python -m J.C.H.M_task
-m
開關執行 package 檢測魔術 - 請注意您省略了 py 擴展名。 直接從模塊目錄運行是一種反模式,這是您遇到的所有問題的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.