找不到模块错误,但路径在PYTHONENV和sys.path中

问题描述

我具有以下项目结构:

airflow_ci
  plugins
    sql_operator.py
  utilities
    __init__.py
    db.py

我要从sql_operator.py导入get_primary_keys中的函数db.py。为此,我编写了代码

from utilities.db import get_primary_keys

此外,我还使用以下方式将路径添加到PYTHONENV:

export PYTHONENV=/home/ubuntu/airflow_ci/utilities

如果我做printenv PYTHONENV,我将得到以下信息:

/home/ubuntu/airflow_ci/utilities

输入python并打印sys.path,可以得到以下信息:

['','/home/ubuntu/airflow_ci/utilities','/usr/lib/python36.zip','/usr/lib/python3.6','/usr/lib/python3.6/lib-dynload','/home/ubuntu/.local/lib/python3.6/site-packages','/usr/local/lib/python3.6/dist-packages','/usr/lib/python3/dist-packages']

仍然出现错误

Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.6/site-packages/airflow/plugins_manager.py",line 182,in <module>
    m = imp.load_source(namespace,filepath)
  File "/usr/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 "/home/ubuntu/airflow_ci/plugins/sql_operator.py",line 2,in <module>
    from utilities.db import get_primary_keys_query
ModuleNotFoundError: No module named 'utilities'

我尝试使用更多的导出语句,例如:

export PYTHONPATH=$PYTHONPATH:/home/ubuntu/airflow_ci
export PYTHONPATH=$PYTHONPATH:/home/ubuntu/airflow_ci/utilities
export PYTHONPATH=/home/ubuntu/airflow_ci/utilities/
export PYTHONPATH=home/ubuntu/airflow_ci/utilities

是否可以解决此问题而无需在sql_operator.py中添加sys.append代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)