将IoT Edge模块部署到Windows设备

时间:2018-01-27 04:04:08

标签: docker iot windows-10-iot-core azure-iot-hub

我正在使用博客https://docs.microsoft.com/en-us/azure/iot-edge/quickstart创建IoT Edge。

我在Windows 1709虚拟机上安装了Python 2.7,azure-iot-edge-runtime-ctl。 我正在运行Docker版本17.09 CE和Windows容器。当我尝试在Windows 10 VM中设置IoT-edge运行时模块时。

iotedgectl setup --connection-string "{device connection string}" --auto-cert-gen-force-no-passwords

当我在面对问题的命令上运行时,任何建议都表示赞赏。

追踪(最近一次呼叫最后一次):

File "c:\python27\lib\runpy.py", line 174, in _run_module_as_main
  "__main__", fname, loader, pkg_name)
  File "c:\python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\Scripts\iotedgectl.exe\__main__.py", line 9, in <module>
  File "c:\python27\lib\site-packages\edgectl\__init__.py", line 25, in coremain
    return cli.execute_user_command()
  File "c:\python27\lib\site-packages\edgectl\edgecli.py", line 54, in execute_user_command
    (is_valid, execute_deployment_cmd) = self._process_cli_args()
  File "c:\python27\lib\site-packages\edgectl\edgecli.py", line 358, in _process_cli_args
    return args.func(args)
  File "c:\python27\lib\site-packages\edgectl\edgecli.py", line 379, in _parse_edge_command
    if EdgeDefault.is_deployment_supported(self._deployment):
  File "c:\python27\lib\site-packages\edgectl\default.py", line 99, in is_deployment_supported
    client = EdgeDockerClient()
  File "c:\python27\lib\site-packages\edgectl\dockerclient.py", line 13, in __init__
    self._client = docker.DockerClient.from_env()
  File "c:\python27\lib\site-packages\docker\client.py", line 81, in from_env
    **kwargs_from_env(**kwargs))
  File "c:\python27\lib\site-packages\docker\client.py", line 38, in __init__
    self.api = APIClient(*args, **kwargs)
  File "c:\python27\lib\site-packages\docker\api\client.py", line 131, in __init__
    'Install pypiwin32 package to enable npipe:// support'
docker.errors.DockerException: Install pypiwin32 package to enable npipe:// support

请提出任何建议。

2 个答案:

答案 0 :(得分:4)

问题解决方案:

  • 此处报告的“npipe:// broken”问题适用于Windows计算机,无论是在Docker中使用Linux还是Windows容器都存在问题。
  • azure-iot-edge-runtime-ctl 1.0.0rc19最近发布,通过确保安装了正确的pypiwin32软件包解决了这个问题。
  • 要获取最新的位执行:

    $> pip install -U azure-iot-edge-runtime-ctl
    
  • 检查已安装的版本:

    $> iotedgectl --version
    iotedgectl 1.0.0rc19
    

问题摘要:

  • iotedgectl使用library docker-py与Docker进行通信,以启动和控制Edge运行时。
  • docker-py使用pypiwin32通过命名管道(npipe)与docker进行通信。随着pypiwin32 v222的发布,docker-py在Windows主机上被破坏。
  • 作为一个快速的解决方法,直到可以合并官方修复,iotedgectl发布,确保正确工作的依赖关系被拉入。

答案 1 :(得分:0)

您安装的Python版本是否为2.7.14?似乎您的PC中尚未安装pypiwin32软件包。请使用pip安装此软件包,例如在您的计算机中执行以下命令:

pip install pypiwin32