我尝试了在SO上找到不同的解决方案。从导入sys
到进行其他操作,但我无法弄清楚如何使事情正常工作。
这是我的结构文件夹:
├── __init__.py
├── config
│ └── airflow.cfg
├── dags
│ ├── __init__.py
│ └── inscription.py
├── docker-compose.yml
├── extra
│ ├── __init__.py
│ └── sql_statements.py
├── plugins
│ ├── __init__.py
│ └── operators
│ ├── __init__.py
│ ├── __pycache__
│ ├── has_rows.py
│ └── s3_to_redshift.py
└── requirements.txt
所有__ini__.py
为空。
当我通过执行dags/inscription.py
导入extra/sql_statements.py
到from extra.sql_statements import *
中的代码时,我的IDE(PyCharm)向我大喊大叫,但是当我使用docker运行项目时,它失败了
[2019-10-07 07:35:12,286] {{__init__.py:416}} ERROR - Failed to import: /usr/local/airflow/dags/inscription.py
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/airflow/models/__init__.py", line 413, in process_file
m = imp.load_source(mod_name, filepath)
File "/usr/local/lib/python3.6/imp.py", line 172, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 684, in _load
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/usr/local/airflow/dags/inscription.py", line 8, in <module>
from extra.sql_statements import *
ModuleNotFoundError: No module named 'extra'
我不明白,因为我使用的其他一些python脚本似乎可以这种方式运行,但是我没有docker即可运行它们。我想了解这里发生的事情。