TypeError: detect_vcs() missing 1 required positional argument: 'ui' when running `devpi upload --formats bdist_wheel`

TypeError: detect_vcs() missing 1 required positional argument: 'ui' when running `devpi upload --formats bdist_wheel`

username@machinename:~/$ devpi upload --formats bdist_wheel
Traceback (most recent call last):
  File "/opt/python3.6/bin/devpi", line 11, in <module>
    sys.exit(main())
  File "/opt/python3.6/lib/python3.6/site-packages/devpi/main.py", line 32, in main
    return method(hub, hub.args)
  File "/opt/python3.6/lib/python3.6/site-packages/devpi/upload.py", line 33, in main
    setupdir_only=setupcfg.get("setupdir-only"))
  File "/opt/python3.6/lib/python3.6/site-packages/devpi/upload.py", line 281, in __init__
    hasvcs = check_manifest.detect_vcs().metadata_name
TypeError: detect_vcs() missing 1 required positional argument: 'ui'

我的版本是:

devpi-client==5.1.0
devpi-common==3.4.0

我该如何解决这个问题?我试过 upgrading/downgrading devpi-client4.4.05.1.1 但它仍然给我同样的错误。

这是由于 check_manifestdevpi 这两个包之间的不兼容。由于 check_manifest==0.42detect_vcs 函数需要一个必需的参数 uidevpi 在您的版本中没有给出它 (hasvcs = check_manifest.detect_vcs().metadata_name)

这个问题有2个解决方案:

  1. check_manifest 降级为 0.41

  2. 将 devpi-client 升级到版本 >= 5.2.0。 (由于已为 devpi-client==5.2.0 (https://github.com/devpi/devpi/commit/f40e0f51b610325d807367206cced90ed1fa005d)

    引入修复