首页 > 解决方案 > 安装 docker-compose 时出错 (def _collat​​e(*iterables, key=lambda a: a, reverse=False)

问题描述

docker-compose -v在使用 apt-get install docker-compose 安装后检查/执行 cmd 时观察到以下错误。请建议如何解决这个问题?

  Traceback (most recent call last):
  File "/usr/local/bin/docker-compose", line 7, in <module>
    from compose.cli.main import main
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 23, in <module>
    from ..bundle import get_image_digests
  File "/usr/local/lib/python2.7/dist-packages/compose/bundle.py", line 12, in <module>
    from .config.serialize import denormalize_config
  File "/usr/local/lib/python2.7/dist-packages/compose/config/__init__.py", line 6, in <module>
    from .config import ConfigurationError
  File "/usr/local/lib/python2.7/dist-packages/compose/config/config.py", line 50, in <module>
    from .validation import match_named_volumes
  File "/usr/local/lib/python2.7/dist-packages/compose/config/validation.py", line 12, in <module>
    from jsonschema import Draft4Validator
  File "/usr/local/lib/python2.7/dist-packages/jsonschema/__init__.py", line 33, in <module>
    import importlib_metadata as metadata
  File "/usr/local/lib/python2.7/dist-packages/importlib_metadata/__init__.py", line 9, in <module>
    import zipp
  File "/usr/local/lib/python2.7/dist-packages/zipp.py", line 12, in <module>
    import more_itertools
  File "/usr/local/lib/python2.7/dist-packages/more_itertools/__init__.py", line 1, in <module>
    from more_itertools.more import *  # noqa
  File "/usr/local/lib/python2.7/dist-packages/more_itertools/more.py", line 340
    def _collate(*iterables, key=lambda a: a, reverse=False):

SyntaxError: invalid syntax

以下是安装 docker compose 以及 python、pip、docker repo 的 Ansible 代码:

   - name: Install Python 2.7.12
      raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)

    - name: Install pip
      apt:
          name: python-pip
          update_cache: yes
          state: latest
      become: true
      become_method: sudo

    <code to add docker repo  , docker package >   

    - name: Install Docker-py (pegged to version 1.9 to work around bug referenced at https://github.com/StanfordBioinformatics/loom/issues/205)
      pip: name=docker

    - name: Download and install docker-compose to /usr/local/bin
      pip: name=docker-compose

标签: pythonpython-2.7dockerdocker-compose

解决方案


这个错误...

  File "/usr/local/lib/python2.7/dist-packages/more_itertools/more.py", line 340
    def _collate(*iterables, key=lambda a: a, reverse=False):

SyntaxError: invalid syntax

...表示代码使用的是适用于 Python 3 的语法,但您使用的是 Python 2。这可能是一个打包错误,但您在问题中没有提供足够的信息来解决这个问题。如果您想更新您的问题以指示您正在运行的发行版和版本,我们可以查看解决方案。

错误来自more-itertools包。您可以通过运行来解决此特定问题:

pip install more-itertools==5.0.0

这将安装一个more-itertools与 Python 2 兼容的版本。


推荐阅读