簡體   English   中英

Python 當前腳本需要運行主文件時從父目錄相對導入

[英]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
|

所有文件夾都是包。
我有兩個要求:

  1. 我需要能夠在 A_task 中導入 M_task 模塊。
    我能夠使用
    from H.M_task import method
  2. 在 M_task 中導入 C_task

在第二種情況下,我面臨幾個問題。
當我在本地機器上運行代碼時可以使用絕對導入,但在部署代碼時將無法使用絕對導入。 所以這是毫無疑問的。
僅當我僅將 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.

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