Не удалось запустить cloud-init при запуске после обновления до Python 3.6

Я установил Python 3.6 вместо выпуска по умолчанию 3.5 на новом облачном сервере (Ubuntu 16.04). После того, как я перезапустил сервер, я обнаружил, что он не смог запустить cloud-init при запуске со следующими ошибками в syslog .

 Sep 20 16:16:14 cloud-init[1310]: Traceback (most recent call last): Sep 20 16:16:14 cloud-init[1310]: File "/usr/bin/cloud-init", line 9, in  Sep 20 16:16:14 cloud-init[1310]: load_entry_point('cloud-init==0.7.9', 'console_scripts', 'cloud-init')() Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 570, in load_entry_point Sep 20 16:16:14 cloud-init[1310]: return get_distribution(dist).load_entry_point(group, name) Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2751, in load_entry_point Sep 20 16:16:14 cloud-init[1310]: return ep.load() Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2405, in load Sep 20 16:16:14 cloud-init[1310]: return self.resolve() Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2411, in resolve Sep 20 16:16:14 cloud-init[1310]: module = __import__(self.module_name, fromlist=['__name__'], level=0) Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 27, in  Sep 20 16:16:14 cloud-init[1310]: from cloudinit import stages Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 21, in  Sep 20 16:16:14 cloud-init[1310]: from cloudinit.handlers import cloud_config as cc_part Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/cloudinit/handlers/cloud_config.py", line 11, in  Sep 20 16:16:14 cloud-init[1310]: import jsonpatch Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/jsonpatch.py", line 114, in  Sep 20 16:16:14 cloud-init[1310]: json.load = get_loadjson() Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/jsonpatch.py", line 108, in get_loadjson Sep 20 16:16:14 cloud-init[1310]: argspec = inspect.getargspec(json.load) Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3.6/inspect.py", line 1072, in getargspec Sep 20 16:16:14 cloud-init[1310]: raise ValueError("Function has keyword-only parameters or annotations" Sep 20 16:16:14 cloud-init[1310]: ValueError: Function has keyword-only parameters or annotations, use getfullargspec() API which can support them Sep 20 16:16:14 cloud-init[1310]: Error in sys.excepthook: Sep 20 16:16:14 cloud-init[1310]: Traceback (most recent call last): Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook Sep 20 16:16:14 cloud-init[1310]: from apport.fileutils import likely_packaged, get_recent_crashes Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in  Sep 20 16:16:14 cloud-init[1310]: from apport.report import Report Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in  Sep 20 16:16:14 cloud-init[1310]: import apport.fileutils Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in  Sep 20 16:16:14 cloud-init[1310]: from apport.packaging_impl import impl as packaging Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in  Sep 20 16:16:14 cloud-init[1310]: import apt Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in  Sep 20 16:16:14 cloud-init[1310]: import apt_pkg Sep 20 16:16:14 cloud-init[1310]: ModuleNotFoundError: No module named 'apt_pkg' Sep 20 16:16:14 cloud-init[1310]: Original exception was: Sep 20 16:16:14 cloud-init[1310]: Traceback (most recent call last): Sep 20 16:16:14 cloud-init[1310]: File "/usr/bin/cloud-init", line 9, in  Sep 20 16:16:14 cloud-init[1310]: load_entry_point('cloud-init==0.7.9', 'console_scripts', 'cloud-init')() Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 570, in load_entry_point Sep 20 16:16:14 cloud-init[1310]: return get_distribution(dist).load_entry_point(group, name) Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2751, in load_entry_point Sep 20 16:16:14 cloud-init[1310]: return ep.load() Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2405, in load Sep 20 16:16:14 cloud-init[1310]: return self.resolve() Sep 20 16:16:14 cloud-init[1310]: File "/usr/local/lib/python3.6/dist-packages/pkg_resources/__init__.py", line 2411, in resolve Sep 20 16:16:14 cloud-init[1310]: module = __import__(self.module_name, fromlist=['__name__'], level=0) Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 27, in  Sep 20 16:16:14 cloud-init[1310]: from cloudinit import stages Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 21, in  Sep 20 16:16:14 cloud-init[1310]: from cloudinit.handlers import cloud_config as cc_part Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/cloudinit/handlers/cloud_config.py", line 11, in  Sep 20 16:16:14 cloud-init[1310]: import jsonpatch Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/jsonpatch.py", line 114, in  Sep 20 16:16:14 cloud-init[1310]: json.load = get_loadjson() Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3/dist-packages/jsonpatch.py", line 108, in get_loadjson Sep 20 16:16:14 cloud-init[1310]: argspec = inspect.getargspec(json.load) Sep 20 16:16:14 cloud-init[1310]: File "/usr/lib/python3.6/inspect.py", line 1072, in getargspec Sep 20 16:16:14 cloud-init[1310]: raise ValueError("Function has keyword-only parameters or annotations" Sep 20 16:16:14 cloud-init[1310]: ValueError: Function has keyword-only parameters or annotations, use getfullargspec() API which can support them Sep 20 16:16:14 systemd[1]: Started MySQL Community Server. Sep 20 16:16:14 systemd[1]: cloud-config.service: Main process exited, code=exited, status=1/FAILURE Sep 20 16:16:14 systemd[1]: Failed to start Apply the settings specified in cloud-config. Sep 20 16:16:14 systemd[1]: cloud-config.service: Unit entered failed state. Sep 20 16:16:14 systemd[1]: cloud-config.service: Failed with result 'exit-code'. 

Существовали две проблемы:

 ModuleNotFoundError: No module named 'apt_pkg' ValueError: Function has keyword-only parameters or annotations, use getfullargspec() API which can support them 

Поэтому я запустил apt-get install python3-apt , но пакет уже был установлен. Затем я запустил apt-get install python3-jsonpatch , и это сделано успешно. К сожалению, проблема не устранена.

Наконец, я решил проблему, jsonpatch пакет jsonpatch с помощью pip .

 $ pip3 install --upgrade jsonpatch 

Это известная ошибка (проблема совместимости) в старой версии jsonpatch (см. https://github.com/stefankoegl/python-json-patch/issues/56 ). Мне нужно обновить пакет, вместо apt-get . Это может исправить обе ошибки.