小编JKD*_*JKD的帖子

支持一个python包的两个版本,无需客户端更改代码

我试图在不影响客户端代码的情况下支持多个版本的 python 包。

考虑以下回购:

.
|-- client_code.py
`-- lib
    |-- __init__.py
    `-- foo.py
Run Code Online (Sandbox Code Playgroud)

客户端代码.py

.
|-- client_code.py
`-- lib
    |-- __init__.py
    `-- foo.py
Run Code Online (Sandbox Code Playgroud)

我想client_code.py保持不变。我首先尝试做这样的事情:

lib
|-- __init__.py
|-- v1
|   |-- __init__.py
|   `-- foo.py
`-- v2
    |-- __init__.py
    `-- foo.py
Run Code Online (Sandbox Code Playgroud)

lib/__init__.py :

from lib.foo import f
...
f()
Run Code Online (Sandbox Code Playgroud)

但是客户端代码失败并出现以下错误:

Traceback (most recent call last):
  File "client_code.py", line 1, in <module>
    from lib.foo import f
ImportError: No module named foo
Run Code Online (Sandbox Code Playgroud)

我知道以下选项可行,但它们需要客户更改代码:

lib
|-- __init__.py
|-- v1
| …
Run Code Online (Sandbox Code Playgroud)

python python-import importerror

5
推荐指数
1
解决办法
130
查看次数

标签 统计

importerror ×1

python ×1

python-import ×1