簡體   English   中英

從子文件夾導入python模塊

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

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