iotedgedev
iotedgedev copied to clipboard
[BUG] Installing iotedgedev on ubuntu 20.04 now fails due to 22.1.0 version of pyOpenSSL that has been released yesterday
Description
The current package fails to install. This appears to be due to the 22.1.0 release of pyOpenSSL yesterday: https://pypi.org/project/pyOpenSSL/#history . It also fails to run after the failed install. If I force the pyOpenSSL version to be 22.0.0 then everything works.
Expected behavior
For iotedgedev to install correctly.
Actual behavior
It fails to install.
Steps to Reproduce
Reproduction on ubuntu 20.04:
~$ pip3 install iotedgedev
Collecting iotedgedev
Using cached iotedgedev-3.3.5-py3-none-any.whl (51 kB)
Requirement already satisfied: click>=6.0 in /usr/lib/python3/dist-packages (from iotedgedev) (7.0)
Collecting fstrings
Using cached fstrings-0.1.0-py2.py3-none-any.whl (5.6 kB)
Requirement already satisfied: requests<=2.25.1,>=2.20.0 in /usr/lib/python3/dist-packages (from iotedgedev) (2.22.0)
Collecting bcrypt<=3.1.7
Using cached bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56 kB)
Collecting python-dotenv
Using cached python_dotenv-0.21.0-py3-none-any.whl (18 kB)
Collecting iotedgehubdev==0.14.14
Using cached iotedgehubdev-0.14.14-py3-none-any.whl (38 kB)
Collecting applicationinsights==0.11.9
Using cached applicationinsights-0.11.9-py2.py3-none-any.whl (58 kB)
Collecting azure-cli-core<2.35.0,>=2.34.1
Using cached azure_cli_core-2.34.1-py3-none-any.whl (179 kB)
Collecting pyyaml>=5.4
Using cached PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (701 kB)
Collecting docker>=3.7.0
Using cached docker-6.0.0-py3-none-any.whl (147 kB)
Requirement already satisfied: more-itertools<8.1.0 in /usr/lib/python3/dist-packages (from iotedgedev) (4.2.0)
Processing ./.cache/pip/wheels/2c/1c/b5/6f1b1411615716f6d2b52b9301bfaf032ed5f68d4c7d547be8/commentjson-0.9.0-py3-none-any.whl
Collecting cffi>=1.1
Using cached cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442 kB)
Requirement already satisfied: six>=1.4.1 in /usr/lib/python3/dist-packages (from bcrypt<=3.1.7->iotedgedev) (1.14.0)
Collecting docker-compose==1.29.1
Using cached docker_compose-1.29.1-py2.py3-none-any.whl (114 kB)
Collecting pyOpenSSL>=20.0.1
Using cached pyOpenSSL-22.1.0-py3-none-any.whl (57 kB)
Processing ./.cache/pip/wheels/2b/f3/d4/2f6fb63766f0479b061d03bab249bbd44f116ae5c73b9f8a24/jsonpath_rw-1.4.0-py3-none-any.whl
Collecting regex
Using cached regex-2022.9.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (772 kB)
Collecting msrestazure~=0.6.4
Using cached msrestazure-0.6.4-py2.py3-none-any.whl (40 kB)
Collecting packaging<22.0,>=20.9
Using cached packaging-21.3-py3-none-any.whl (40 kB)
Requirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (2.8)
Collecting argcomplete~=1.8
Using cached argcomplete-1.12.3-py2.py3-none-any.whl (38 kB)
Collecting psutil~=5.9
Using cached psutil-5.9.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (284 kB)
Collecting azure-cli-telemetry==1.0.6.*
Using cached azure_cli_telemetry-1.0.6-py3-none-any.whl (10 kB)
Collecting paramiko<3.0.0,>=2.0.8
Using cached paramiko-2.11.0-py2.py3-none-any.whl (212 kB)
Collecting azure-mgmt-core<2,>=1.2.0
Using cached azure_mgmt_core-1.3.2-py3-none-any.whl (26 kB)
Collecting msal-extensions<0.4,>=0.3.1
Using cached msal_extensions-0.3.1-py2.py3-none-any.whl (18 kB)
Collecting humanfriendly~=10.0
Using cached humanfriendly-10.0-py2.py3-none-any.whl (86 kB)
Collecting PyJWT>=2.1.0
Using cached PyJWT-2.5.0-py3-none-any.whl (20 kB)
Collecting pkginfo>=1.5.0.1
Using cached pkginfo-1.8.3-py2.py3-none-any.whl (26 kB)
Collecting jmespath
Using cached jmespath-1.0.1-py3-none-any.whl (20 kB)
Collecting knack~=0.9.0
Using cached knack-0.9.0-py3-none-any.whl (59 kB)
Collecting msal<2.0.0,>=1.16.0
Using cached msal-1.19.0-py2.py3-none-any.whl (83 kB)
Collecting urllib3>=1.26.0
Using cached urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
Collecting websocket-client>=0.32.0
Using cached websocket_client-1.4.1-py3-none-any.whl (55 kB)
Processing ./.cache/pip/wheels/11/b5/2b/b6896f25d9b272b4f72db3a45a15cb0b7a6e43d7980c936a15/lark_parser-0.7.8-py2.py3-none-any.whl
Collecting pycparser
Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Requirement already satisfied: jsonschema<4,>=2.5.1 in /usr/lib/python3/dist-packages (from docker-compose==1.29.1->iotedgehubdev==0.14.14->iotedgedev) (3.2.0)
Processing ./.cache/pip/wheels/1a/58/0d/9916bf3c72e224e038beb88f669f68b61d2f274df498ff87c6/dockerpty-0.4.1-py3-none-any.whl
Collecting texttable<2,>=0.9.0
Using cached texttable-1.6.4-py2.py3-none-any.whl (10 kB)
Processing ./.cache/pip/wheels/56/ea/58/ead137b087d9e326852a851351d1debf4ada529b6ac0ec4e8c/docopt-0.6.2-py2.py3-none-any.whl
Collecting distro<2,>=1.5.0
Using cached distro-1.7.0-py3-none-any.whl (20 kB)
Collecting decorator
Using cached decorator-5.1.1-py3-none-any.whl (9.1 kB)
Collecting ply
Using cached ply-3.11-py2.py3-none-any.whl (49 kB)
Collecting msrest<2.0.0,>=0.6.0
Using cached msrest-0.7.1-py3-none-any.whl (85 kB)
Collecting adal<2.0.0,>=0.6.0
Using cached adal-1.2.7-py2.py3-none-any.whl (55 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB)
Collecting portalocker~=1.2
Using cached portalocker-1.7.1-py2.py3-none-any.whl (10 kB)
Requirement already satisfied: pynacl>=1.0.1 in /usr/lib/python3/dist-packages (from paramiko<3.0.0,>=2.0.8->azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (1.3.0)
Collecting azure-core<2.0.0,>=1.24.0
Using cached azure_core-1.25.1-py3-none-any.whl (178 kB)
Collecting tabulate
Using cached tabulate-0.8.10-py3-none-any.whl (29 kB)
Collecting pygments
Using cached Pygments-2.13.0-py3-none-any.whl (1.1 MB)
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from msrest<2.0.0,>=0.6.0->msrestazure~=0.6.4->azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (2019.11.28)
Collecting requests-oauthlib>=0.5.0
Using cached requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB)
Collecting isodate>=0.6.0
Using cached isodate-0.6.1-py2.py3-none-any.whl (41 kB)
Collecting python-dateutil<3,>=2.1.0
Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting typing-extensions>=4.0.1
Using cached typing_extensions-4.3.0-py3-none-any.whl (25 kB)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib>=0.5.0->msrest<2.0.0,>=0.6.0->msrestazure~=0.6.4->azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (3.1.0)
ERROR: pyopenssl 22.1.0 has requirement cryptography<39,>=38.0.0, but you'll have cryptography 2.8 which is incompatible.
ERROR: docker 6.0.0 has requirement requests>=2.26.0, but you'll have requests 2.22.0 which is incompatible.
ERROR: docker-compose 1.29.1 has requirement PyYAML<6,>=3.10, but you'll have pyyaml 6.0 which is incompatible.
ERROR: docker-compose 1.29.1 has requirement websocket-client<1,>=0.32.0, but you'll have websocket-client 1.4.1 which is incompatible.
ERROR: iotedgehubdev 0.14.14 has requirement docker==5.0.3, but you'll have docker 6.0.0 which is incompatible.
ERROR: iotedgehubdev 0.14.14 has requirement requests>=2.25.1, but you'll have requests 2.22.0 which is incompatible.
Installing collected packages: fstrings, pycparser, cffi, bcrypt, python-dotenv, dockerpty, texttable, websocket-client, pyyaml, docopt, distro, urllib3, pyparsing, packaging, docker, docker-compose, pyOpenSSL, applicationinsights, decorator, ply, jsonpath-rw, regex, iotedgehubdev, requests-oauthlib, typing-extensions, azure-core, isodate, msrest, PyJWT, python-dateutil, adal, msrestazure, argcomplete, psutil, portalocker, azure-cli-telemetry, paramiko, azure-mgmt-core, msal, msal-extensions, humanfriendly, pkginfo, jmespath, tabulate, pygments, knack, azure-cli-core, lark-parser, commentjson, iotedgedev
WARNING: The script dotenv is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script wsdump is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script distro is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script docker-compose is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script jsonpath.py is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script iotedgehubdev is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script humanfriendly is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script pkginfo is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script tabulate is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script pygmentize is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script iotedgedev is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed PyJWT-2.5.0 adal-1.2.7 applicationinsights-0.11.9 argcomplete-1.12.3 azure-cli-core-2.34.1 azure-cli-telemetry-1.0.6 azure-core-1.25.1 azure-mgmt-core-1.3.2 bcrypt-3.1.7 cffi-1.15.1 commentjson-0.9.0 decorator-5.1.1 distro-1.7.0 docker-6.0.0 docker-compose-1.29.1 dockerpty-0.4.1 docopt-0.6.2 fstrings-0.1.0 humanfriendly-10.0 iotedgedev-3.3.5 iotedgehubdev-0.14.14 isodate-0.6.1 jmespath-1.0.1 jsonpath-rw-1.4.0 knack-0.9.0 lark-parser-0.7.8 msal-1.19.0 msal-extensions-0.3.1 msrest-0.7.1 msrestazure-0.6.4 packaging-21.3 paramiko-2.11.0 pkginfo-1.8.3 ply-3.11 portalocker-1.7.1 psutil-5.9.2 pyOpenSSL-22.1.0 pycparser-2.21 pygments-2.13.0 pyparsing-3.0.9 python-dateutil-2.8.2 python-dotenv-0.21.0 pyyaml-6.0 regex-2022.9.13 requests-oauthlib-1.3.1 tabulate-0.8.10 texttable-1.6.4 typing-extensions-4.3.0 urllib3-1.26.12 websocket-client-1.4.1
~$ .local/bin/iotedgedev
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Traceback (most recent call last):
File ".local/bin/iotedgedev", line 5, in <module>
from iotedgedev.cli import main
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/cli.py", line 16, in <module>
from .dockercls import Docker
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/dockercls.py", line 4, in <module>
import docker
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/__init__.py", line 2, in <module>
from .api import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/__init__.py", line 2, in <module>
from .client import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/client.py", line 6, in <module>
import requests
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
from urllib3.contrib import pyopenssl
File "/home/timstokman/.local/lib/python3.8/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
import OpenSSL.SSL
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 19, in <module>
from OpenSSL.crypto import (
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/crypto.py", line 3224, in <module>
utils.deprecated(
TypeError: deprecated() got an unexpected keyword argument 'name'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 32, in <module>
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 12, in <module>
import os, glob, subprocess, os.path, time, pwd, sys, requests_unixsocket
File "/usr/lib/python3/dist-packages/requests_unixsocket/__init__.py", line 1, in <module>
import requests
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
from urllib3.contrib import pyopenssl
File "/home/timstokman/.local/lib/python3.8/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
import OpenSSL.SSL
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 19, in <module>
from OpenSSL.crypto import (
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/crypto.py", line 3224, in <module>
utils.deprecated(
TypeError: deprecated() got an unexpected keyword argument 'name'
Original exception was:
Traceback (most recent call last):
File ".local/bin/iotedgedev", line 5, in <module>
from iotedgedev.cli import main
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/cli.py", line 16, in <module>
from .dockercls import Docker
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/dockercls.py", line 4, in <module>
import docker
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/__init__.py", line 2, in <module>
from .api import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/__init__.py", line 2, in <module>
from .client import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/client.py", line 6, in <module>
import requests
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
from urllib3.contrib import pyopenssl
File "/home/timstokman/.local/lib/python3.8/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
import OpenSSL.SSL
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 19, in <module>
from OpenSSL.crypto import (
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/crypto.py", line 3224, in <module>
utils.deprecated(
TypeError: deprecated() got an unexpected keyword argument 'name'
~$ .local/bin/iotedgedev
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Traceback (most recent call last):
File ".local/bin/iotedgedev", line 5, in <module>
from iotedgedev.cli import main
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/cli.py", line 16, in <module>
from .dockercls import Docker
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/dockercls.py", line 4, in <module>
import docker
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/__init__.py", line 2, in <module>
from .api import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/__init__.py", line 2, in <module>
from .client import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/client.py", line 6, in <module>
import requests
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
from urllib3.contrib import pyopenssl
File "/home/timstokman/.local/lib/python3.8/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
import OpenSSL.SSL
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 19, in <module>
from OpenSSL.crypto import (
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/crypto.py", line 3224, in <module>
utils.deprecated(
TypeError: deprecated() got an unexpected keyword argument 'name'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 32, in <module>
import apport.fileutils
File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 12, in <module>
import os, glob, subprocess, os.path, time, pwd, sys, requests_unixsocket
File "/usr/lib/python3/dist-packages/requests_unixsocket/__init__.py", line 1, in <module>
import requests
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
from urllib3.contrib import pyopenssl
File "/home/timstokman/.local/lib/python3.8/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
import OpenSSL.SSL
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 19, in <module>
from OpenSSL.crypto import (
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/crypto.py", line 3224, in <module>
utils.deprecated(
TypeError: deprecated() got an unexpected keyword argument 'name'
Original exception was:
Traceback (most recent call last):
File ".local/bin/iotedgedev", line 5, in <module>
from iotedgedev.cli import main
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/cli.py", line 16, in <module>
from .dockercls import Docker
File "/home/timstokman/.local/lib/python3.8/site-packages/iotedgedev/dockercls.py", line 4, in <module>
import docker
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/__init__.py", line 2, in <module>
from .api import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/__init__.py", line 2, in <module>
from .client import APIClient
File "/home/timstokman/.local/lib/python3.8/site-packages/docker/api/client.py", line 6, in <module>
import requests
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
from urllib3.contrib import pyopenssl
File "/home/timstokman/.local/lib/python3.8/site-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
import OpenSSL.SSL
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 19, in <module>
from OpenSSL.crypto import (
File "/home/timstokman/.local/lib/python3.8/site-packages/OpenSSL/crypto.py", line 3224, in <module>
utils.deprecated(
TypeError: deprecated() got an unexpected keyword argument 'name'
But if I ensure the pyOpenSSL version is 22.0.0
then it installs fine:
~$ pip3 install pyOpenSSL==22.0.0
Collecting pyOpenSSL==22.0.0
Using cached pyOpenSSL-22.0.0-py2.py3-none-any.whl (55 kB)
Collecting cryptography>=35.0
Using cached cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB)
Collecting cffi>=1.12
Using cached cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442 kB)
Collecting pycparser
Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Installing collected packages: pycparser, cffi, cryptography, pyOpenSSL
Successfully installed cffi-1.15.1 cryptography-38.0.1 pyOpenSSL-22.0.0 pycparser-2.21
~$ pip3 install iotedgedev
Collecting iotedgedev
Using cached iotedgedev-3.3.5-py3-none-any.whl (51 kB)
Collecting fstrings
Using cached fstrings-0.1.0-py2.py3-none-any.whl (5.6 kB)
Collecting bcrypt<=3.1.7
Using cached bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56 kB)
Collecting iotedgehubdev==0.14.14
Using cached iotedgehubdev-0.14.14-py3-none-any.whl (38 kB)
Collecting pyyaml>=5.4
Using cached PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (701 kB)
Collecting azure-cli-core<2.35.0,>=2.34.1
Using cached azure_cli_core-2.34.1-py3-none-any.whl (179 kB)
Collecting python-dotenv
Using cached python_dotenv-0.21.0-py3-none-any.whl (18 kB)
Collecting docker>=3.7.0
Using cached docker-6.0.0-py3-none-any.whl (147 kB)
Requirement already satisfied: click>=6.0 in /usr/lib/python3/dist-packages (from iotedgedev) (7.0)
Collecting applicationinsights==0.11.9
Using cached applicationinsights-0.11.9-py2.py3-none-any.whl (58 kB)
Requirement already satisfied: requests<=2.25.1,>=2.20.0 in /usr/lib/python3/dist-packages (from iotedgedev) (2.22.0)
Requirement already satisfied: more-itertools<8.1.0 in /usr/lib/python3/dist-packages (from iotedgedev) (4.2.0)
Processing ./.cache/pip/wheels/2c/1c/b5/6f1b1411615716f6d2b52b9301bfaf032ed5f68d4c7d547be8/commentjson-0.9.0-py3-none-any.whl
Requirement already satisfied: six>=1.4.1 in /usr/lib/python3/dist-packages (from bcrypt<=3.1.7->iotedgedev) (1.14.0)
Requirement already satisfied: cffi>=1.1 in ./.local/lib/python3.8/site-packages (from bcrypt<=3.1.7->iotedgedev) (1.15.1)
Requirement already satisfied: pyOpenSSL>=20.0.1 in ./.local/lib/python3.8/site-packages (from iotedgehubdev==0.14.14->iotedgedev) (22.0.0)
Collecting regex
Using cached regex-2022.9.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (772 kB)
Processing ./.cache/pip/wheels/2b/f3/d4/2f6fb63766f0479b061d03bab249bbd44f116ae5c73b9f8a24/jsonpath_rw-1.4.0-py3-none-any.whl
Collecting docker-compose==1.29.1
Using cached docker_compose-1.29.1-py2.py3-none-any.whl (114 kB)
Collecting msrestazure~=0.6.4
Using cached msrestazure-0.6.4-py2.py3-none-any.whl (40 kB)
Collecting packaging<22.0,>=20.9
Using cached packaging-21.3-py3-none-any.whl (40 kB)
Collecting paramiko<3.0.0,>=2.0.8
Using cached paramiko-2.11.0-py2.py3-none-any.whl (212 kB)
Collecting humanfriendly~=10.0
Using cached humanfriendly-10.0-py2.py3-none-any.whl (86 kB)
Collecting psutil~=5.9
Using cached psutil-5.9.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (284 kB)
Collecting PyJWT>=2.1.0
Using cached PyJWT-2.5.0-py3-none-any.whl (20 kB)
Collecting jmespath
Using cached jmespath-1.0.1-py3-none-any.whl (20 kB)
Collecting msal-extensions<0.4,>=0.3.1
Using cached msal_extensions-0.3.1-py2.py3-none-any.whl (18 kB)
Requirement already satisfied: cryptography in ./.local/lib/python3.8/site-packages (from azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (38.0.1)
Collecting knack~=0.9.0
Using cached knack-0.9.0-py3-none-any.whl (59 kB)
Collecting azure-cli-telemetry==1.0.6.*
Using cached azure_cli_telemetry-1.0.6-py3-none-any.whl (10 kB)
Collecting msal<2.0.0,>=1.16.0
Using cached msal-1.19.0-py2.py3-none-any.whl (83 kB)
Collecting argcomplete~=1.8
Using cached argcomplete-1.12.3-py2.py3-none-any.whl (38 kB)
Collecting pkginfo>=1.5.0.1
Using cached pkginfo-1.8.3-py2.py3-none-any.whl (26 kB)
Collecting azure-mgmt-core<2,>=1.2.0
Using cached azure_mgmt_core-1.3.2-py3-none-any.whl (26 kB)
Collecting websocket-client>=0.32.0
Using cached websocket_client-1.4.1-py3-none-any.whl (55 kB)
Collecting urllib3>=1.26.0
Using cached urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
Processing ./.cache/pip/wheels/11/b5/2b/b6896f25d9b272b4f72db3a45a15cb0b7a6e43d7980c936a15/lark_parser-0.7.8-py2.py3-none-any.whl
Requirement already satisfied: pycparser in ./.local/lib/python3.8/site-packages (from cffi>=1.1->bcrypt<=3.1.7->iotedgedev) (2.21)
Collecting ply
Using cached ply-3.11-py2.py3-none-any.whl (49 kB)
Collecting decorator
Using cached decorator-5.1.1-py3-none-any.whl (9.1 kB)
Collecting texttable<2,>=0.9.0
Using cached texttable-1.6.4-py2.py3-none-any.whl (10 kB)
Requirement already satisfied: jsonschema<4,>=2.5.1 in /usr/lib/python3/dist-packages (from docker-compose==1.29.1->iotedgehubdev==0.14.14->iotedgedev) (3.2.0)
Processing ./.cache/pip/wheels/56/ea/58/ead137b087d9e326852a851351d1debf4ada529b6ac0ec4e8c/docopt-0.6.2-py2.py3-none-any.whl
Collecting distro<2,>=1.5.0
Using cached distro-1.7.0-py3-none-any.whl (20 kB)
Processing ./.cache/pip/wheels/1a/58/0d/9916bf3c72e224e038beb88f669f68b61d2f274df498ff87c6/dockerpty-0.4.1-py3-none-any.whl
Collecting adal<2.0.0,>=0.6.0
Using cached adal-1.2.7-py2.py3-none-any.whl (55 kB)
Collecting msrest<2.0.0,>=0.6.0
Using cached msrest-0.7.1-py3-none-any.whl (85 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB)
Requirement already satisfied: pynacl>=1.0.1 in /usr/lib/python3/dist-packages (from paramiko<3.0.0,>=2.0.8->azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (1.3.0)
Collecting portalocker<3,>=1.0; python_version >= "3.5" and platform_system != "Windows"
Using cached portalocker-2.5.1-py2.py3-none-any.whl (15 kB)
Collecting pygments
Using cached Pygments-2.13.0-py3-none-any.whl (1.1 MB)
Collecting tabulate
Using cached tabulate-0.8.10-py3-none-any.whl (29 kB)
Collecting azure-core<2.0.0,>=1.24.0
Using cached azure_core-1.25.1-py3-none-any.whl (178 kB)
Collecting python-dateutil<3,>=2.1.0
Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting isodate>=0.6.0
Using cached isodate-0.6.1-py2.py3-none-any.whl (41 kB)
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from msrest<2.0.0,>=0.6.0->msrestazure~=0.6.4->azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (2019.11.28)
Collecting requests-oauthlib>=0.5.0
Using cached requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB)
Collecting typing-extensions>=4.0.1
Using cached typing_extensions-4.3.0-py3-none-any.whl (25 kB)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib>=0.5.0->msrest<2.0.0,>=0.6.0->msrestazure~=0.6.4->azure-cli-core<2.35.0,>=2.34.1->iotedgedev) (3.1.0)
ERROR: docker 6.0.0 has requirement requests>=2.26.0, but you'll have requests 2.22.0 which is incompatible.
ERROR: docker-compose 1.29.1 has requirement PyYAML<6,>=3.10, but you'll have pyyaml 6.0 which is incompatible.
ERROR: docker-compose 1.29.1 has requirement websocket-client<1,>=0.32.0, but you'll have websocket-client 1.4.1 which is incompatible.
ERROR: iotedgehubdev 0.14.14 has requirement docker==5.0.3, but you'll have docker 6.0.0 which is incompatible.
ERROR: iotedgehubdev 0.14.14 has requirement requests>=2.25.1, but you'll have requests 2.22.0 which is incompatible.
ERROR: azure-cli-telemetry 1.0.6 has requirement portalocker~=1.2, but you'll have portalocker 2.5.1 which is incompatible.
Installing collected packages: fstrings, bcrypt, regex, pyyaml, applicationinsights, ply, decorator, jsonpath-rw, websocket-client, texttable, python-dotenv, docopt, distro, urllib3, pyparsing, packaging, docker, dockerpty, docker-compose, iotedgehubdev, PyJWT, python-dateutil, adal, isodate, requests-oauthlib, typing-extensions, azure-core, msrest, msrestazure, paramiko, humanfriendly, psutil, jmespath, portalocker, msal, msal-extensions, pygments, tabulate, argcomplete, knack, azure-cli-telemetry, pkginfo, azure-mgmt-core, azure-cli-core, lark-parser, commentjson, iotedgedev
WARNING: The script jsonpath.py is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script wsdump is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script dotenv is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script distro is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script docker-compose is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script iotedgehubdev is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script humanfriendly is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script pygmentize is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script tabulate is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script pkginfo is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script iotedgedev is installed in '/home/timstokman/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed PyJWT-2.5.0 adal-1.2.7 applicationinsights-0.11.9 argcomplete-1.12.3 azure-cli-core-2.34.1 azure-cli-telemetry-1.0.6 azure-core-1.25.1 azure-mgmt-core-1.3.2 bcrypt-3.1.7 commentjson-0.9.0 decorator-5.1.1 distro-1.7.0 docker-6.0.0 docker-compose-1.29.1 dockerpty-0.4.1 docopt-0.6.2 fstrings-0.1.0 humanfriendly-10.0 iotedgedev-3.3.5 iotedgehubdev-0.14.14 isodate-0.6.1 jmespath-1.0.1 jsonpath-rw-1.4.0 knack-0.9.0 lark-parser-0.7.8 msal-1.19.0 msal-extensions-0.3.1 msrest-0.7.1 msrestazure-0.6.4 packaging-21.3 paramiko-2.11.0 pkginfo-1.8.3 ply-3.11 portalocker-2.5.1 psutil-5.9.2 pygments-2.13.0 pyparsing-3.0.9 python-dateutil-2.8.2 python-dotenv-0.21.0 pyyaml-6.0 regex-2022.9.13 requests-oauthlib-1.3.1 tabulate-0.8.10 texttable-1.6.4 typing-extensions-4.3.0 urllib3-1.26.12 websocket-client-1.4.1
:~$ .local/bin/iotedgedev
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Usage: iotedgedev [OPTIONS] COMMAND [ARGS]...
Options:
--version Show the version and exit.
-h, --help Show this message and exit.
Commands:
add Add a new module to the solution
build Build the solution
deploy Deploy solution to IoT Edge device
genconfig Expand environment variables and placeholders in deployment manifest template file and copy to config
folder
init Create a new IoT Edge solution and provision Azure resources
log Open a new terminal window for EdgeAgent, EdgeHub and each Edge module and save to LOGS_PATH
monitor Monitor messages from IoT Edge device to IoT Hub
new Create a new IoT Edge solution
push Push module images to container registry
setup Setup IoT Edge simulator. This must be done before starting
start Start IoT Edge simulator
stop Stop IoT Edge simulator
docker Manage Docker
iothub Manage IoT Hub and IoT Edge devices
simulator Manage IoT Edge simulator
solution Manage IoT Edge solutions
Environment
iotedgedev: 3.3.5 Python: 3.8.10 Pip: 20.0.2 OS: Ubuntu 20.04
Same issue, thanks pyOpenSSL==22.0.0
seems to work for me now
- task: Bash@3
displayName: 'Azure IoT Edge - Manual Install'
inputs:
targetType: 'inline'
script: 'pip install -U iotedgedev pyOpenSSL==22.0.0'
@chull434 You run that task first, then use the AzureIotEdge task as the next one?
@MattCosturos Yeap
steps:
- task: Bash@3
displayName: 'Azure IoT Edge - Manual Install'
inputs:
targetType: 'inline'
script: 'pip install -U iotedgedev pyOpenSSL==22.0.0'
- task: AzureCLI@2
displayName: 'Get Metrics Key'
inputs:
azureSubscription: $(AzureSubscription)
scriptType: 'bash'
scriptLocation: 'scriptPath'
scriptPath: '$(Pipeline.Workspace)/drop/.azure/scripts/get_metrics_key.sh'
- task: AzureIoTEdge@2
displayName: 'Azure IoT Edge - Generate deployment manifest'
inputs:
action: 'Generate deployment manifest'
templateFilePath: '$(Pipeline.Workspace)/drop/ProjectName/deployment.template.json'
deploymentManifestOutputPath: '$(Pipeline.Workspace)/drop/configs/deployment.json'
- task: AzureIoTEdge@2
displayName: 'Azure IoT Edge - Deploy to IoT Edge devices'
inputs:
action: 'Deploy to IoT Edge devices'
deploymentFilePath: '$(Pipeline.Workspace)/drop/configs/deployment.json'
azureSubscription: $(AzureSubscription)
iothubname: IoTHubName
deviceOption: 'Multiple Devices'
targetcondition: "tags.environment='${{ parameters.environmentType }}'"
@timstokman thanks for filing this issue, we are adding to our backlog and will share on the thread when updates are available
Experienced the issue while running a pipeline in Azure DevOps using the manual iotedgedev install to fix this bug (#14167) for the build module images action of Azure IoT Edge task. Everything started happening after 3.3.5 (pyOpenSSL>=20.0.1 resolves pyOpenSSL-22.1.0)
From that end the error looks like this:
##[error]/usr/lib/python3/dist-packages/requests/init.py:89:` RequestsDependencyWarning: urllib3 (1.26.12) or chardet (3.0.4) doesn't match a supported version! ... Original exception was: Traceback (most recent call last): File "/home/vsts/.local/bin/iotedgedev", line 5, in
from iotedgedev.cli import main File "/home/vsts/.local/lib/python3.8/site-packages/iotedgedev/cli.py", line 11, in from .dockercls import Docker File "/home/vsts/.local/lib/python3.8/site-packages/iotedgedev/dockercls.py", line 4, in import docker File "/home/vsts/.local/lib/python3.8/site-packages/docker/init.py", line 2, in from .api import APIClient File "/home/vsts/.local/lib/python3.8/site-packages/docker/api/init.py", line 2, in from .client import APIClient File "/home/vsts/.local/lib/python3.8/site-packages/docker/api/client.py", line 6, in import requests File "/usr/lib/python3/dist-packages/requests/init.py", line 95, in from urllib3.contrib import pyopenssl File "/home/vsts/.local/lib/python3.8/site-packages/urllib3/contrib/pyopenssl.py", line 50, in import OpenSSL.SSL File "/home/vsts/.local/lib/python3.8/site-packages/OpenSSL/init.py", line 8, in from OpenSSL import SSL, crypto File "/home/vsts/.local/lib/python3.8/site-packages/OpenSSL/SSL.py", line 19, in from OpenSSL.crypto import ( File "/home/vsts/.local/lib/python3.8/site-packages/OpenSSL/crypto.py", line 3224, in utils.deprecated( TypeError: deprecated() got an unexpected keyword argument 'name'
Applied the change reported to force pyOpenSSL==22.0.0 and now the build task works.
Experienced similar issue. Manual iotedgedev install didn't solve the issue
...
Original exception was:
Traceback (most recent call last):
File "/usr/local/bin/iotedgedev", line 5, in <module>
from iotedgedev.cli import main
File "/usr/local/lib/python3.8/dist-packages/iotedgedev/cli.py", line 11, in <module>
from .dockercls import Docker
File "/usr/local/lib/python3.8/dist-packages/iotedgedev/dockercls.py", line 4, in <module>
import docker
File "/usr/local/lib/python3.8/dist-packages/docker/__init__.py", line 2, in <module>
from .api import APIClient
File "/usr/local/lib/python3.8/dist-packages/docker/api/__init__.py", line 2, in <module>
from .client import APIClient
File "/usr/local/lib/python3.8/dist-packages/docker/api/client.py", line 6, in <module>
import requests
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
from urllib3.contrib import pyopenssl
File "/usr/local/lib/python3.8/dist-packages/urllib3/contrib/pyopenssl.py", line 50, in <module>
import OpenSSL.SSL
File "/usr/local/lib/python3.8/dist-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/usr/local/lib/python3.8/dist-packages/OpenSSL/SSL.py", line 19, in <module>
from OpenSSL.crypto import (
File "/usr/local/lib/python3.8/dist-packages/OpenSSL/crypto.py", line 3224, in <module>
utils.deprecated(
TypeError: deprecated() got an unexpected keyword argument 'name'
##[error]Error: iotedgedev installation failed, see detailed error in debug mode
What helped was forcing update or urllib3 and requests.
- script: |
pip install -U urllib3 requests
- task: AzureIoTEdge@2
displayName: AzureIoTEdge - Build module images
inputs:
action: Build module images
templateFilePath: deployment.template.json
defaultPlatform: amd64
Forci
@MattCosturos Yeap
steps: - task: Bash@3 displayName: 'Azure IoT Edge - Manual Install' inputs: targetType: 'inline' script: 'pip install -U iotedgedev pyOpenSSL==22.0.0' - task: AzureCLI@2 displayName: 'Get Metrics Key' inputs: azureSubscription: $(AzureSubscription) scriptType: 'bash' scriptLocation: 'scriptPath' scriptPath: '$(Pipeline.Workspace)/drop/.azure/scripts/get_metrics_key.sh' - task: AzureIoTEdge@2 displayName: 'Azure IoT Edge - Generate deployment manifest' inputs: action: 'Generate deployment manifest' templateFilePath: '$(Pipeline.Workspace)/drop/ProjectName/deployment.template.json' deploymentManifestOutputPath: '$(Pipeline.Workspace)/drop/configs/deployment.json' - task: AzureIoTEdge@2 displayName: 'Azure IoT Edge - Deploy to IoT Edge devices' inputs: action: 'Deploy to IoT Edge devices' deploymentFilePath: '$(Pipeline.Workspace)/drop/configs/deployment.json' azureSubscription: $(AzureSubscription) iothubname: IoTHubName deviceOption: 'Multiple Devices' targetcondition: "tags.environment='${{ parameters.environmentType }}'"
This no longer works, unfortunately.
pip install -U urllib3 requests
This is currently working fix.
At the maintainers, can this tool please pin their dependencies? Either by pinning all the versions in requirements.txt (including transistive dependencies), or using a tool like poetry or pipenv. It's kind of ridiculous that azure pipelines randomly fall over every few months because some python dependency has gotten upgraded.
It's kind of ridiculous that azure pipelines randomly fall over every few months because some python dependency has gotten upgraded.
It's makes it seem like actually deploying edge modules in a controllable, automated, and scalable way is an afterthought from Microsoft.
I am not entirely sure if this repo or the pipeline tasks repo is maintained by MS. I would also not jump into conclusions that MS can make anything controllable, automated, and scalable, or reliable. The evidence is to the contrary.
I tried removing pyOpenSSL==22.0.0
and going back to the below it seems to work again now
- task: Bash@3
displayName: 'Azure IoT Edge - Manual Install'
inputs:
targetType: 'inline'
script: 'pip install -U iotedgedev'
cross post - https://github.com/microsoft/azure-pipelines-tasks/issues/16964
I tried removing
pyOpenSSL==22.0.0
and going back to the below it seems to work again now- task: Bash@3 displayName: 'Azure IoT Edge - Manual Install' inputs: targetType: 'inline' script: 'pip install -U iotedgedev'
cross post - microsoft/azure-pipelines-tasks#16964
Oh so maybe it's fixed?
I tried removing
pyOpenSSL==22.0.0
and going back to the below it seems to work again now- task: Bash@3 displayName: 'Azure IoT Edge - Manual Install' inputs: targetType: 'inline' script: 'pip install -U iotedgedev'
cross post - microsoft/azure-pipelines-tasks#16964
I can confirm this is now working. Until next time.
Closing as the issue is resolved.
Well because some workaround works it does not mean the issue is resolved. With this attitude Microsoft solutions will never be fit for production environments.