我想通过引用子模块gsutil ls -d $ee_repo | parallel -j 10 -k "task {} $PWD $year {#}"
从以下文件夹结构中导入模块。
task(){
...
jobnumber=$4
gpu=$(expr $jobnumber% 2)
...
}
这是我想做的事的一个例子:
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'
将在AWS上实现为Lambda函数,并且为了获得所有必要的依赖关系,我需要将src文件夹的内容上传到AWS,但需要有一个顶部文件夹的已知名称,以便我可以将其用于绝对导入。如果没有app
,则src的内容将上传到具有我无法引用的自动生成名称的文件夹。
我首先尝试了相对导入,但是收到了writers/company_*.py
错误,所以现在我要进行绝对导入,即从here插入。
答案 0 :(得分:0)
您可以在代码中添加它,
import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), "source"))
只需将source
替换为保存模块的文件夹。
在这种情况下,将source
替换为app
答案 1 :(得分:0)
您是否尝试将__init__.py
放在应用文件夹中?
module
|
|--module
| |
| |--__init__.py
| |--module.py