【问题标题】:Cant import my python modules despite being at the same level in the hierarchy尽管在层次结构中处于同一级别,但无法导入我的 python 模块
【发布时间】:2021-01-22 04:06:39
【问题描述】:

我正在编写一个供内部使用的库,名为“etllib”,我有以下结构:

etl-lib
├── README.md
├── etllib
│   ├── __init__.py
│   ├── client
│   │   ├── __init__.py
│   │   ├── elastic.py
│   │   └── qradar.py
│   ├── etl
│   │   ├── __init__.py
│   │   └── etl_imperva.py
│   └── util
│       ├── __init__.py
│       ├── config.py
│       ├── daemon.py
│       ├── elastic
│       │   ├── __init__.py
│       │   └── impeva_index_config.py
│       └── imperva
│           ├── __init__.py
│           ├── kpe_config.py
│           └── query_config.py
├── scripts
│   └── etl_imperva
└── setup.py

我在 etllib/scripts 中有一个名为“etl_imperva”的脚本。里面的代码是这样的:

#!/usr/bin/python3
import sys
from etllib.etl.etl_imperva import ETL


# Run with python3 imperva_run.py start|run|stop|restart
ETL.startup(sys.argv)

如果我安装这个包(etllib)并调用这个脚本,它工作得很好。但是当我需要测试东西时,如何告诉 python 使用我工作目录中的模块而不是安装那些模块?因为每次我对模块进行更改时,我都需要重新安装软件包,这有点耗时。

我也尝试卸载软件包进行测试,但是在运行此脚本时出现以下错误:

Exception has occurred: ModuleNotFoundError
No module named 'etllib'
  File "/home/jleonse/etl-lib/scripts/run_imperva", line 3, in <module>
    from etllib.etl.etl_imperva import ETL

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: python module package


    【解决方案1】:

    实际上,它在层次结构中不在同一级别。

    from etllib.etl.etl_imperva import ETL 仅当 etllib 位于同一目录或系统 PATH 中的目录中时才有效,但 etllib 位于父目录中,因此无法找到它。

    因此,如果您将项目结构更改为:

    etl-lib
    ├── README.md
    ├── etllib
    │   ├── __init__.py
    │   ├── client
    │   │   ├── __init__.py
    │   │   ├── elastic.py
    │   │   └── qradar.py
    │   ├── etl
    │   │   ├── __init__.py
    │   │   └── etl_imperva.py
    │   └── util
    │       ├── __init__.py
    │       ├── config.py
    │       ├── daemon.py
    │       ├── elastic
    │       │   ├── __init__.py
    │       │   └── impeva_index_config.py
    │       └── imperva
    │           ├── __init__.py
    │           ├── kpe_config.py
    │           └── query_config.py
    ├── etl_imperva
    │
    └── setup.py
    

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2021-03-30
      • 2020-03-16
      • 1970-01-01
      • 2015-07-26
      相关资源
      最近更新 更多