我正在使用Azure IoT Edge Hands-on Lab并遇到iotedgectl命令的问题,我们似乎无法破解。
当我运行'iotedgectl status'(或'start'或'stop')时,我收到以下错误消息:
文件“c:\ python27 \ lib \ runpy.py”,第174行,在_run_module_as_main中 “ main ”,fname,loader,pkg_name) 文件“c:\ python27 \ lib \ runpy.py”,第72行,在_run_code中 run_globals中的exec代码 文件“C:\ Python27 \ Scripts \ iotedgectl.exe__main __。py”,第9行,in 文件“c:\ python27 \ lib \ site-packages \ edgectl__init __。py”,第25行,在> coremain中 return cli.execute_user_command() 在> execute_user_command中输入文件“c:\ python27 \ lib \ site-packages \ edgectl \ edgecli.py”,第54行 (is_valid,execute_deployment_cmd)= self._process_cli_args() 在> _process_cli_args中输入文件“c:\ python27 \ lib \ site-packages \ edgectl \ edgecli.py”,第358行 return args.func(args) 在> _parse_edge_command中输入文件“c:\ python27 \ lib \ site-packages \ edgectl \ edgecli.py”,第379行 如果EdgeDefault.is_deployment_supported(self._deployment): 文件“c:\ python27 \ lib \ site-packages \ edgectl \ default.py”,第99行,> is_deployment_supported client = EdgeDockerClient() 文件“c:\ python27 \ lib \ site-packages \ edgectl \ dockerclient.py”,第13行,> init self._client = docker.DockerClient.from_env() 文件“c:\ python27 \ lib \ site-packages \ docker \ client.py”,第81行,来自from_env ** kwargs_from_env(** kwargs)) 在 init 中输入文件“c:\ python27 \ lib \ site-packages \ docker \ client.py”,第38行 self.api = APIClient(* args,** kwargs) 文件“c:\ python27 \ lib \ site-packages \ docker \ api \ client.py”,第131行,> init '安装pypiwin32软件包以启用npipe:// support' docker.errors.DockerException:安装pypiwin32软件包以启用npipe://>支持
我正在运行Docker for Windows 17.12.0版(最近的稳定构建版),并运行Linux容器。
这是我的配置文件:
{ “部署”:{ “docker”:{ “edgeRuntimeImage”:“microsoft / azureiotedge-agent:1.0-preview”, “loggingOptions”:{ “log-driver”:“json-file”, “log-opts”:{ “max-size”:“10m” } }, “注册管理机构”:[], “uri”:“unix:///var/run/docker.sock” }, “type”:“docker” }, “deviceConnectionString”:“”, “homeDir”:“C:\ ProgramData \ azure-iot-edge \ data”, “hostName”:“mygateway.local”, “logLevel”:“info”, “schemaVersion”:“1”, “安全”:{ “证书”:{ “选项”:“预先安装”, “preInstalled”:{ “agentCAPassphraseFilePath”:“”, “deviceCACertificateFilePath”:“c:\ edge \ myGateway-public.pem”, “deviceCAChainCertificateFilePath”:“c:\ edge \ myGateway-all.pem”, “deviceCAPassphraseFilePath”:“”, “deviceCAPrivateKeyFilePath”:“c:\ edge \ myGateway-private.pem”, “forceNoPasswords”:false, “ownerCACertificateFilePath”:“c:\ edge \ RootCA.pem” }, “学科”: { “commonName”:“边缘设备CA”, “countryCode”:“US”, “地方”:“雷德蒙德”, “组织”:“默认边缘组织”, “organizationUnit”:“边缘单位”, “州”:“华盛顿” } } } }
答案 0 :(得分:3)
编辑原始答案:
问题解决方案:
要获取最新的位执行:
$> pip install -U azure-iot-edge-runtime-ctl
检查已安装的版本:
$> iotedgectl --version
iotedgectl 1.0.0rc19
问题摘要:
原始答案
要在Windows上运行,即使您使用基于Linux的容器,也需要pypiwin32,因为docker客户端希望它存在于Windows主机上。
今天发布的pypiwin32版本222(01/25/2018)似乎正在导致您报告的问题。见https://pypi.python.org/pypi/pypiwin32。
在我的Windows 10主机上,pypiwin32版本219似乎工作正常。我建议在下面安装版本并重试。
对于Python 2.7.14
对于Python 3.6.4