IoT Azure Edge ContextualVersionConflict: pyOpenSSL
Я следую учебному руководству по 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 ответа
Перед установкой iotedgectl у вас уже установлена более низкая версия pyOpenSSL, которая не соответствует требованию к версии iotedgectl, но предшествует более высокой версии pyOpenSSL, установленной вместе с iotedgectl.
Вы можете проверить этот ответ, чтобы узнать, как сначала заставить Python ссылаться на более высокую версию pyOpenSSL.
Кроме того, похоже, что вы работаете на macOS. Если это так, обратитесь к разделу Быстрый запуск: развертывание вашего первого модуля IoT Edge на устройстве Linux или Mac - предварительный просмотр вместо быстрого запуска: развертывание вашего первого модуля IoT Edge с портала Azure на устройстве Windows - предварительный просмотр.
Из сообщения видно, что 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
Если проблема не может быть решена, пожалуйста, дайте мне знать.