在venv:zip文件中安装带有pip的程序包时出错.BadZipFile:文件不是zip文件



我正试图在python 3.6.8虚拟环境上安装包ansible(特别是2.9.27版本(。我得到以下错误:

Looking in indexes: https://pypi.org/simple/
Collecting ansible==2.9.27
Using cached ansible-2.9.27-py3-none-any.whl
ERROR: Exception:
Traceback (most recent call last):
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/cli/base_command.py", line 164, in exc_logging_wrapper
status = run_func(*args)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/cli/req_command.py", line 205, in wrapper
return func(self, options, args)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/commands/install.py", line 339, in run
reqs, check_supported_wheels=not options.target_dir
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 93, in resolve
collected.requirements, max_rounds=try_to_avoid_resolution_too_deep
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 482, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 349, in resolve
self._add_to_criteria(self.state.criteria, r, parent=None)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
if not criterion.candidates:
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
return bool(self._sequence)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
return any(self)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
return (c for c in iterator if id(c) not in self._incompatible_ids)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
candidate = func()
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link
version=version,
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 287, in __init__
version=version,
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
self.dist = self._prepare()
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prepare
dist = self._prepare_distribution()
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 292, in _prepare_distribution
return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/operations/prepare.py", line 482, in prepare_linked_requirement
return self._prepare_linked_requirement(req, parallel_builds)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/operations/prepare.py", line 550, in _prepare_linked_requirement
self.build_isolation,
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/operations/prepare.py", line 59, in _get_prepared_distribution
return abstract_dist.get_metadata_distribution()
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/distributions/wheel.py", line 26, in get_metadata_distribution
return get_wheel_distribution(wheel, canonicalize_name(self.req.name))
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/metadata/__init__.py", line 51, in get_wheel_distribution
return Distribution.from_wheel(wheel, canonical_name)
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/metadata/pkg_resources.py", line 37, in from_wheel
with wheel.as_zipfile() as zf:
File "/opt/dev/automated_golive/development/custom-python3-ansible-299/lib64/python3.6/site-packages/pip/_internal/metadata/base.py", line 321, in as_zipfile
return zipfile.ZipFile(self.location, allowZip64=True)
File "/usr/lib64/python3.6/zipfile.py", line 1131, in __init__
self._RealGetContents()
File "/usr/lib64/python3.6/zipfile.py", line 1198, in _RealGetContents
raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file

该安装适用于ansible包的更高版本。

这里出了什么问题?

附言:我意识到我正在尝试在一个Python版本上使用Ansible的EOL版本,该版本也不再受Ansible项目的支持。

这是缓存包的问题。pip正在从缓存加载文件:

Using cached ansible-2.9.27-py3-none-any.whl

绕过缓存时安装成功:

pip install ansible==2.9.27 --no-cache-dir

或者,正如@FlyingTeller在推荐中所指出的,我们可以在继续安装之前清除缓存:

pip cache purge
pip install ansible==2.9.27

最新更新