0

我正在关注快速入门 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))

我需要在那里改变什么?或者需要配置什么?

4

2 回答 2

1

在安装 iotedgectl 之前,您已经安装了较低版本的 pyOpenSSL,它不符合 iotedgectl 的版本要求,但在与 iotedgectl 一起安装的较高版本的 pyOpenSSL 之前。

您可以查看此答案以了解如何让 Python 首先引用更高版本的 pyOpenSSL。

此外,您似乎正在使用 macOS。如果是这样,请参阅快速入门:将您的第一个 IoT Edge 模块部署到 Linux 或 Mac 设备 - 预览版,而不是快速入门:将您的第一个 IoT Edge 模块从 Azure 门户部署到 Windows 设备 - 预览版

于 2018-05-08T05:16:49.977 回答
1

从消息中可以看出,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

如果问题无法解决,请随时告诉我。

于 2018-05-07T07:03:48.517 回答