Python

Python — это популярный язык скриптов, используемый для машинного обучения и автоматизации систем. Сведения о Python см. на сайте python.org.

Использование Python в 64- или 32-разрядных системах

Чтобы установить Python в Windows IoT Базовая, сделайте следующее:

  1. Скачайте пакет NuGet для Python, а затем установите файлы с помощью PowerShell.

    $python_zip = "https://globalcdn.nuget.org/packages/python.3.7.4.nupkg"
    if($env:PROCESSOR_ARCHITECTURE -ieq "x86") {
        $python_zip = "https://www.nuget.org/api/v2/package/pythonx86/3.7.4"
    }
    Invoke-WebRequest $python_zip -OutFile c:\data\python.zip
    Expand-Archive C:\data\python.zip -DestinationPath c:\python_temp
    move C:\python_temp\tools c:\python
    rd C:\python_temp -Recurse -Force
    del C:\data\python.zip
    
  2. Добавьте Python в системный путь.

    cmd /c 'setx PATH "%PATH%";c:\python;c:\python\scripts /M'
    $env:Path += ";c:\python;c:\python\scripts"
    
  3. Убедитесь, что установлена текущая версия pip.

    python -m pip install --upgrade pip
    

Использование Python в Windows IoT Базовая ARM32

Чтобы получить Python для Windows, необходимо самостоятельно создать двоичные файлы.

  1. Выполните сборку Python для ARM32. Ветвь должна иметь версию 3.8 или выше.

    git clone https://github.com/python/cpython
    cd cpython
    git checkout 3.8
    pcbuild\build.bat -p ARM --no-tkinter
    
  2. Создание файла .zip Python для Windows IoT Core ARM32. Для запуска компьютера и макета необходимо использовать ту же версию Python. На этом шаге создается Python для 32-разрядной системы с последующим созданием ZIP-файлов. Если вы хотите включить тесты стандартных библиотек в ZIP-файл, добавьте параметр --include-tests.

    REM Build Python for x86 to use for building the .zip file.
    pcbuild\build.bat
    pcbuild\win32\python.exe PC/layout -vv -s "." -b ".\PCBuild\arm32" -t ".\PCBuild\temp" --preset-iot --include-venv --zip ".\PCBuild\arm32\zip\python.zip"
    
    net use P: \\[ip address]\c$ /user:administrator
    
    copy .\PCBuild\arm32\zip\python.zip P:\data
    
  3. Используйте PowerShell, чтобы извлечь ZIP-файл на устройстве и добавить Python в системный путь.

    Expand-Archive C:\data\python.zip -DestinationPath c:\python
    cmd /c 'setx PATH "%PATH%";c:\python;c:\python\scripts /M'
    $env:Path += ";c:\python;c:\python\scripts"
    
  4. Проверьте выполнение команды print('Hello World').

    python -c "print('Hello World!');quit()"
    

Использование Python в Windows IoT Базовая ARM64

Чтобы получить Python для Windows, необходимо самостоятельно создать двоичные файлы.

  1. Клонируйте Python для ARM32 и выполните get_externals. Ветвь должна иметь версию 3.8 или выше.

    git clone https://github.com/python/cpython
    cd cpython
    git checkout 3.8
    pcbuild\get_externals.bat
    cd ..
    
  2. Клонируйте и соберите libffi.

    git clone https://github.com/libffi/libffi
    set LIBFFI_SOURCE=%CD%\libffi
    
    REM Visual Studio 2015 or greater with ARM64 tools installed is required to build Python
    REM the location of VCVARSALL may differ on your machine
    set VCVARSALL="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
    
    cd cpython
    if exist c:\cygwin\bin\sh.exe (
        call pcbuild\prepare_libffi.bat -arm64
    ) else (
        call pcbuild\prepare_libffi.bat -arm64 --install-cygwin
    )
    if not exist externals\libffi\arm64\libffi-7.dll echo ERROR: libffi not built! & exit /b 1
    
  3. Выполните сборку Python для ARM64.

    pcbuild\build.bat -p ARM64 --no-tkinter
    
  4. Создание файла .zip Python для Windows IoT Базовая ARM64. Для запуска компьютера и макета необходимо использовать ту же версию Python. На этом шаге создается Python для 32-разрядной системы с последующим созданием ZIP-файлов. Если вы хотите включить тесты стандартных библиотек в ZIP-файл, добавьте параметр --include-tests.

    REM Build Python for x86 to use for building the .zip file.
    pcbuild\build.bat
    
    REM Map drive to device and copy files using PC/layout
    net use P: \\[ip address]\c$ /user:administrator
    pcbuild\win32\python.exe PC/layout -vv -s "." -b ".\PCBuild\arm64" -t ".\PCBuild\temp" --preset-iot --include-venv --copy P:\python
    
  5. Добавьте Python в системный путь.

    setx PATH "%PATH%";c:\python;c:\python\scripts /M
    set PATH=%PATH%;c:\python;c:\python\scripts
    
  6. Проверьте выполнение команды print('Hello World').

    python -c "print('Hello World!');quit()"
    

Ознакомьтесь с пакетами Azure SDK Центра Интернета вещей версии 2 для Python (предварительная версия).

  1. Сначала установите пакет SDK.

    python -m pip install azure-iot-device
    

    В выходных данных pip install могут возникнуть ошибки: Download error on https://pypi.org/simple/pbr/. Если возникла такая ошибка, перейдите к разделу Set up an IoT Hub and create a Device Identity:

  2. В браузере перейдите по адресу https://pypi.org/simple/pbr/. Проверьте сертификат веб-сайта и обратите внимание, что он выдан DigiCert.

  3. Создайте каталог с именем c:\test.

  4. Запустите certmgr.msc из командной строки на настольном компьютере с Windows.

  5. В представлении в виде дерева перейдите к Trusted Root Certification Authorities. Разверните узел и выберите Certificates.

  6. Справа найдите DigiCert High Assurance EV Root, щелкните правой кнопкой мыши и выберите All Tasks>Export. Обратите внимание, что существует несколько сертификатов DigiCert, и они определяются поочередно.

  7. В открывшемся диалоговом окне щелкните Next.

  8. Выберите DER encoded binary X.509 (.CER) (это должно быть значение по умолчанию) и щелкните Next.

  9. В поле ввода File name: укажите c:\test\DigiCert High Assurance EV Root.cer.

    Мастер экспорта сертификатов

  10. Нажмите кнопку Next.

  11. Нажмите кнопку Finish.

  12. Скопируйте c:\test\DigiCert High Assurance EV Root.cer на устройство, выполнив следующую команду на настольном компьютере:

    net use X: \\host\c$ /user:host\administrator
    md X:\test
    copy "c:\test\GlobalSign Root CA.cer" X:\test
    
  13. На устройстве импортируйте сертификат в корневое хранилище с помощью PowerShell.

    certmgr -add "c:\test\DigiCert High Assurance EV Root.cer" -s root -r localMachine -c
    certmgr -add "c:\test\GlobalSign Root CA.cer" -s root -r localMachine -c
    
  14. Попытайтесь установить azure-iot-device еще раз.

    python -m pip install azure-iot-device --no-color
    
  15. В выходных данных pip install могут возникнуть ошибки: Download error for https://files.pythonhosted.org/. Если вы не видите этого, перейдите к разделу Set up an IoT Hub and create a Device Identity

  16. В браузере перейдите по адресу https://files.pythonhosted.org/. Проверьте сертификат веб-сайта и обратите внимание, что он выдан GlobalSign.

  17. Повторите эти действия, чтобы экспортировать сертификат GlobalSign Root CA с настольного компьютера и импортировать его на устройство.

  18. Попытайтесь установить azure-iot-device еще раз.

Настройка Центра Интернета вещей и создание удостоверения устройства

  1. Установите Azure CLI (или используйте Azure Cloud Shell) и создайте Центр Интернета вещей Azure.

    az iot hub create --resource-group <your resource group> --name <your IoT Hub name>
    
    • Обратите внимание, что эта операция может занять несколько минут.
  2. Добавьте расширение Интернета вещей в Azure CLI, а затем зарегистрируйте удостоверение устройства.

    az extension add --name azure-cli-iot-ext
    az iot hub device-identity create --hub-name <your IoT Hub name> --device-id <your device id>
    
  3. Получите строку подключения устройства с помощью Azure CLI.

    az iot hub device-identity show-connection-string --device-id <your device id> --hub-name <your IoT Hub name>
    

    Они должны быть представлены в следующем формате.

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    

Отправка простого сообщения телеметрии

  1. Включите мониторинг телеметрии в Центре Интернета вещей с помощью Azure CLI.

    az iot hub monitor-events --hub-name <your IoT Hub name> --output table
    
  2. На устройстве задайте строку подключения устройства в качестве переменной среды с именем IOTHUB_DEVICE_CONNECTION_STRING.

    REM NOTE: there are no quotes
    set IOTHUB_DEVICE_CONNECTION_STRING=<your connection string here>
    
  3. Скопируйте скрипт simple_send_d2c_message.py и запустите его на устройстве.

    cmd /c "if not exist c:\test md c:\test"
    REM copy simple_send_d2c_message.py from https://github.com/Azure/azure-iot-sdk-python-preview/blob/master/azure-iot-device/samples/simple_send_d2c_message.py to c:\test on the device
    python c:\test\simple_send_d2c_message.py
    

Использование Python в контейнере Docker в 64-разрядных системах Windows IoT Базовая

  1. Скачайте последнюю версию Docker и установите файлы.

    Invoke-WebRequest https://master.dockerproject.org/windows/x86_64/docker.zip -OutFile c:\data\docker.zip
    Expand-Archive c:\data\docker.zip -DestinationPath c:\data
    move c:\data\docker\docker*exe c:\windows\system32
    Remove-Item c:\data\docker -Recurse -Force
    dockerd --register-service
    net start docker
    
  2. Создайте dockerfile.

    # escape = `
    FROM mcr.microsoft.com/windows/nanoserver:1809-amd64
    
    # Get Python
    ADD "https://globalcdn.nuget.org/packages/python.3.7.4.nupkg" .\temp\py.zip
    
    COPY test test
    COPY certmgr.exe c:\windows\system32
    
    # need admin for setx and certmgr
    USER ContainerAdministrator
    
    # Extract Python
    RUN tar -xf c:\temp\py.zip -C c:\temp && `
        move c:\temp\tools c:\ && `
        ren tools python && `
        RD c:\temp /s/q && `
        setx PATH "%PATH%";c:\python;c:\python\scripts /M
    
    RUN dir c:\test\*.cer /s/b > c:\test\certs.txt && `
        for /f "delims==" %i in (c:\test\certs.txt) do certmgr -add "%i" -s root -r localMachine -c < c:\test\1.txt
    
    USER ContainerUser
    
    RUN python -m pip install --upgrade pip && `
        python -m pip install azure-iot-device
    
    CMD cmd /k c:\test\start.cmd
    
  3. Скопируйте dockerfile в папку c:\docker на устройстве. Также скопируйте все сертификаты в папку P:\docker\test. 1.txt — это файл с номером 1 и возвратом каретки.

    net use P: \\[device IP address]\c$ /user:administrator
    md P:\docker\test
    copy Dockerfile P:\docker
    copy AppCertificates\*.cer P:\docker\test
    copy 1.txt P:\docker\test
    
  4. Подключитесь к устройству с помощью SSH. Удаленная оболочка PowerShell не будет работать для интерактивного сеанса Docker.

    docker build --isolation==process . -t python
    docker run --isolation==process python
    
  5. Выведите Hello World.

    python -c "print('Hello Python in Containers!')"
    
  6. Ознакомьтесь с инструкциями по проверке сообщений, отправляемых из облака на устройство с помощью пакета SDK для Интернета вещей Azure.

Дополнительные ресурсы для разработчиков Python