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

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

考虑以下回购:

.
|-- client_code.py
`-- lib
    |-- __init__.py
    `-- foo.py
.
|-- client_code.py
`-- lib
    |-- __init__.py
    `-- foo.py

客户端代码.py

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

lib
|-- __init__.py
|-- v1
|   |-- __init__.py
|   `-- foo.py
`-- v2
    |-- __init__.py
    `-- foo.py
lib
|-- __init__.py
|-- v1
|   |-- __init__.py
|   `-- foo.py
`-- v2
    |-- __init__.py
    `-- foo.py

lib/__init__.py :

from lib.foo import f
...
f()

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

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

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

import os

if os.environ.get("USE_V2", "0") == "0": # Or some other runtime check
    from .v1 import foo
else:
    from .v2 import foo

这样的事情可能吗?

问题的更一般版本在这里:Support two versions of a python package without clients need to change code

以上是支持一个python包的两个版本,无需客户端更改代码的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>