[英]Importing python modules from a subfolder
我想通過引用子模塊app
從以下文件夾結構中導入模塊。
├── src
│ ├── __init__.py
│ └── app
│ ├── __init__.py
│ ├── getters
│ │ ├── company_1.py
│ │ └── company_2.py
│ ├── parsers
│ │ ├── company_1.py
│ │ └── company_2.py
│ └── writers
│ ├── company_1.py
│ └── company_2.py
這是我想要做的一個例子:
# src/app/writers/company_1.py
import app.parsers.company_1 as parser_1
def write_data(event, context):
...
但我收到錯誤ModuleNotFoundError: No module named 'app'
。 我不明白為什么這不起作用。
筆記
為什么我要包含看似多余的子文件夾app
? 這里的附帶故事是,函數writers/company_*.py
將在 AWS 上實現為 Lambda 函數,為了獲得所有必要的依賴項,我需要將 src 文件夾的內容上傳到 AWS,但需要有一個具有已知名稱的頂級文件夾,以便我可以將其用於絕對導入。 如果沒有app
,src 的內容將上傳到一個我無法引用的自動生成名稱的文件夾中。
我首先嘗試了相對導入,但收到了一個attempted relative import with no known parent package
錯誤,所以現在我要進行絕對導入,從這里開始。
你可以在代碼中添加這個,
import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), "source"))
只需將source
替換為您保存模塊的文件夾。 在這種情況下,用app
替換source
您是否嘗試將__init__.py
放在您的應用程序文件夾中?
module
|
|--module
| |
| |--__init__.py
| |--module.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.