我想安装 multipledispatch
软件包的
这个分叉的 git 存储库,并且想要安装最新版本/标签
1.0.1
。
所以在我的
pyproject.toml
文件中,我有一个依赖项
"multipledispatch @ git+https://github.com/ImahnShekhzadeh/[email protected]"
然后通过
pip
(pip install -e .["dev"]
) 安装软件包。
但是,安装后,当我这样做时
pip list | grep multipledispatch
我明白了
multipledispatch 1.0.0
作为输出(注意错误的标签/版本)。当我这么做的时候
import multipledispatch
print(multipledispatch.__version__)
输出是
0.6.0
,这既不是我想要的版本,也不与pip显示的一致。
有人可以澄清一下吗:
pip show
和 multipledispatch.__version__
显示一致/正确的版本?如有任何建议,我们将不胜感激。
编辑1:当我这样做时
import inspect
from multipledispatch.dispatcher import Dispatcher
lines = inspect.getsource(Dispatcher.__call__)
print(lines)
输出是
def __call__(self, *args, **kwargs):
# As documented here (https://github.com/mrocklin/multipledispatch/issues/126),
# the `__call__()` function of dispatch needs to be slight adapted,
# do this by extending `types`:
# https://stackoverflow.com/questions/1380860/add-variables-to-tuple
types_args = tuple([type(arg) for arg in args])
types = (
types_args + tuple(list(type(kwarg) for kwarg in kwargs.values()))
)
[...]
这很好,因为这些是我所做的更改。但然后,
path = inspect.getfile(Dispatcher.__call__)
结果
/home/[...]/anaconda3/envs/[...]/lib/python3.11/site-packages/multipledispatch/dispatcher.py
在那里,
__call__
函数不是我上面得到的函数,而是我的fork所基于的函数。你知道为什么以及我该如何解决吗?
实际上,您这边的版本一切都很好。然而,图书馆本身却是一团糟。
如果您在 git 存储库中提交 __version__
版本时检查
__init__.py
文件中的 1.0.1
,它会被设置为 0.6.0
此外,setup.py在源代码中包含版本
1.0.0
。
因此,总结一下,您在设置为
1.0.1
的标签处克隆了 github 存储库,但 setup.py 包含 1.0.0
并且 __version__
包含 0.6.0
。
除了自己更改源代码之外,您无能为力。