Python/Pip 使用不同且错误版本的包

问题描述 投票:0回答:1

我想安装 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显示的一致。


有人可以澄清一下吗:

  1. 如何安装正确标签?
  2. 如何让
    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所基于的函数。你知道为什么以及我该如何解决吗?

python git pip tags
1个回答
0
投票

实际上,您这边的版本一切都很好。然而,图书馆本身却是一团糟。

如果您在 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

除了自己更改源代码之外,您无能为力。

© www.soinside.com 2019 - 2024. All rights reserved.