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