我试图在不影响客户端代码的情况下支持多个版本的 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)