Ubuntu 18.04でdocker-composeがImportErrorが発生して動かなくなったら
docker-composeを実行するとImportError: No module named backports.ssl_match_hostname
事件はUbuntu 18.04 LTSにインストールしたdocker-composeでフツーに
sudo docker-compose up -d
と何も考えずにタイプしたら起こりました。
しかし、aptによるとbackports.ssl_match_hostnameはすでにインストールされていました。
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 11, in
load_entry_point('docker-compose==1.17.1', 'console_scripts', 'docker-compose')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2693, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2324, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2330, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.7/dist-packages/compose/cli/main.py", line 17, in
from . import errors
File "/usr/lib/python2.7/dist-packages/compose/cli/errors.py", line 11, in
from docker.errors import APIError
File "/usr/lib/python2.7/dist-packages/docker/__init__.py", line 2, in
from .api import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/__init__.py", line 2, in
from .client import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/client.py", line 11, in
from .build import BuildApiMixin
File "/usr/lib/python2.7/dist-packages/docker/api/build.py", line 9, in
from .. import utils
File "/usr/lib/python2.7/dist-packages/docker/utils/__init__.py", line 2, in
from .build import tar, exclude_paths
File "/usr/lib/python2.7/dist-packages/docker/utils/build.py", line 5, in
from .utils import create_archive
File "/usr/lib/python2.7/dist-packages/docker/utils/utils.py", line 18, in
from .. import tls
File "/usr/lib/python2.7/dist-packages/docker/tls.py", line 5, in
from .transport import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/__init__.py", line 3, in
from .ssladapter import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/ssladapter.py", line 21, in
from backports.ssl_match_hostname import match_hostname
ImportError: No module named backports.ssl_match_hostname
pi@pi-M730SR:~/Desktop/wordpress-docker-compose$ docker-compose -v
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 11, in
load_entry_point('docker-compose==1.17.1', 'console_scripts', 'docker-compose')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2693, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2324, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2330, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.7/dist-packages/compose/cli/main.py", line 17, in
from . import errors
File "/usr/lib/python2.7/dist-packages/compose/cli/errors.py", line 11, in
from docker.errors import APIError
File "/usr/lib/python2.7/dist-packages/docker/__init__.py", line 2, in
from .api import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/__init__.py", line 2, in
from .client import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/client.py", line 11, in
from .build import BuildApiMixin
File "/usr/lib/python2.7/dist-packages/docker/api/build.py", line 9, in
from .. import utils
File "/usr/lib/python2.7/dist-packages/docker/utils/__init__.py", line 2, in
from .build import tar, exclude_paths
File "/usr/lib/python2.7/dist-packages/docker/utils/build.py", line 5, in
from .utils import create_archive
File "/usr/lib/python2.7/dist-packages/docker/utils/utils.py", line 18, in
from .. import tls
File "/usr/lib/python2.7/dist-packages/docker/tls.py", line 5, in
from .transport import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/__init__.py", line 3, in
from .ssladapter import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/ssladapter.py", line 21, in
from backports.ssl_match_hostname import match_hostname
ImportError: No module named backports.ssl_match_hostname
...は?
しかし、aptによるとbackports.ssl_match_hostnameはすでにインストールされていました。
解決策(詳細な原因は不明です)
以下を走らせます。
これで最初のコマンドがを動かし、直ったことを確認します。
sudo pycompile -p python-backports.ssl-match-hostnameこのコマンドを実行するとモジュールの不足しているファイルが作成されます。
これで最初のコマンドがを動かし、直ったことを確認します。