ArchLinux虚拟环境中pip安装pgAdmin4 8.11+版本报InvalidVersion错误的解决办法咨询
ArchLinux虚拟环境中pip安装pgAdmin4 8.11+版本报InvalidVersion错误的解决办法咨询
我正在ArchLinux系统的虚拟环境里尝试用pip安装pgAdmin4,执行的命令是:
pip install pgadmin4
但遇到了问题:8.11及以上版本(当前最新是8.14)都会安装失败,抛出InvalidVersion异常,错误提示如下:
ERROR: Exception: ... pip._vendor.packaging.version.InvalidVersion: Invalid version: '6.12.4-arch1-1'
我尝试过把setuptools降级到65版本,但并没有解决问题。不过8.10版本可以正常安装,执行这个命令就能成功:
pip install pgadmin4==8.10
而且安装这个版本时,会自动把setuptools-70.3.0作为依赖安装好。
我自己琢磨了下,是不是Python生态最近更新了版本格式的强制规范,不再兼容不符合规范的版本标识?ArchLinux的版本格式6.12.4-arch1-1看起来和规范不匹配,所以导致pgAdmin4最新版本无法安装?如果我的理解有问题,麻烦大家帮我纠正。
想请教各位,有没有办法能顺利安装最新版本的pgAdmin4呢?
PS:附上完整的错误堆栈跟踪,供大家参考:
ERROR: Exception: Traceback (most recent call last): File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper status = _inner_run() ^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run return self.run(options, args) ^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py", line 67, in wrapper return func(self, options, args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/commands/install.py", line 379, in run requirement_set = resolver.resolve( ^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve result = self._result = resolver.resolve( ^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve state = resolution.resolve(requirements, max_rounds=max_rounds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve self._add_to_criteria(self.state.criteria, r, parent=None) File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria if not criterion.candidates: ^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__ return bool(self._sequence) ^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 174, in __bool__ return any(self) ^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 162, in <genexpr> return (c for c in iterator if id(c) not in self._incompatible_ids) ^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 53, in _iter_built candidate = func() ^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link base: Optional[BaseCandidate] = self._make_base_candidate_from_link( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link self._link_candidate_cache[link] = LinkCandidate( ^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 304, in __init__ super().__init__( File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__ self.dist = self._prepare() ^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 248, in _prepare self._check_metadata_consistency(dist) File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 230, in _check_metadata_consistency list(dist.iter_dependencies(list(dist.iter_provided_extras()))) File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py", line 220, in iter_dependencies elif any(req.marker.evaluate(context) for context in contexts): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py", line 220, in <genexpr> elif any(req.marker.evaluate(context) for context in contexts): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py", line 325, in evaluate return _evaluate_markers(self._markers, current_environment) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py", line 211, in _evaluate_markers groups[-1].append(_evaluate_markers(marker, environment)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py", line 225, in _evaluate_markers groups[-1].append(_eval_op(lhs_value, op, rhs_value)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py", line 183, in _eval_op return spec.contains(lhs, prereleases=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py", line 552, in contains normalized_item = _coerce_version(item) ^^^^^^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py", line 28, in _coerce_version version = Version(version) ^^^^^^^^^^^^^^^^ File "/opt/pgadmin/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/version.py", line 202, in __init__ raise InvalidVersion(f"Invalid version: '{version}'") pip._vendor.packaging.version.InvalidVersion: Invalid version: '6.12.4-arch1-1'
备注:内容来源于stack exchange,提问作者Julinium




