IoT Azure Edge ContextualVersionConflict: pyOpenSSL - PullRequest
0 голосов
/ 06 мая 2018

Я следую учебному пособию Quickstart Azure IoT Edge и в разделе Настройка среды выполнения IoT Edge .

Когда я настраиваю среду выполнения с помощью строки подключения устройства IoT Edge

iotedgectl setup --connection-string "{device connection string}" --nopass

(я изменил строку подключения) я получаю следующий результат

Traceback (most recent call last):
  File "/usr/local/bin/iotedgectl", line 11, in <module>
    sys.exit(coremain())
  File "/Library/Python/2.7/site-packages/edgectl/__init__.py", line 23, in coremain
    version = pkg_resources.require(PACKAGE_NAME)[0].version
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 959, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 851, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pyOpenSSL 0.13.1 (/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python), Requirement.parse('pyOpenSSL>=0.14'), set(['docker']))

Это не позволяет мне продолжить с командой

iotedgectl start

Я посмотрел на файл init .py Из строки 857-859 Есть:

        # Register the new requirements needed by req
        for new_requirement in new_requirements:
            required_by[new_requirement].add(req.project_name)

Линии 848 - 851

 if dist not in req:
                # Oops, the "best" so far conflicts with a dependency
                dependent_req = required_by[req]
                raise VersionConflict(dist, req).with_context(dependent_req)

Линия 959

needed = self.resolve(parse_requirements(requirements))

Что мне нужно изменить там? Или что нужно настроить?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Перед установкой iotedgectl у вас уже установлена ​​более низкая версия pyOpenSSL, которая не соответствует требованию к версии iotedgectl, но предшествует более высокой версии pyOpenSSL, установленной вместе с iotedgectl.

Вы можете проверить этот ответ , чтобы узнать, как сначала заставить Python ссылаться на более высокую версию pyOpenSSL.

Кроме того, похоже, что вы работаете в macOS. Если это так, обратитесь к Быстрый запуск: развертывание вашего первого модуля IoT Edge на устройстве Linux или Mac - предварительный просмотр вместо Быстрый запуск: развертывание вашего первого модуля IoT Edge с портала Azure на устройстве Windows - превью .

0 голосов
/ 07 мая 2018

Из сообщения видно, что pyOpenSSL слишком старый, ему нужно 0.14 или позже.

Traceback (most recent call last):
  File "/usr/local/bin/iotedgectl", line 11, in <module>
    sys.exit(coremain())
  File "/Library/Python/2.7/site-packages/edgectl/__init__.py", line 23, in coremain
    version = pkg_resources.require(PACKAGE_NAME)[0].version
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py",
 line 959, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py",
 line 851, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (pyOpenSSL 0.13.1 (/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python),
 Requirement.parse('pyOpenSSL>=0.14'), set(['docker']))

Вы можете использовать следующую команду для обновления pyOpenSSL:

pip install --upgrade pyOpenSSL

Если проблема не может быть решена, пожалуйста, дайте мне знать.

...