繁体   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