Python
Python — это популярный язык скриптов, используемый для машинного обучения и автоматизации систем. Сведения о Python см. на сайте python.org.
Использование Python в 64- или 32-разрядных системах
Чтобы установить Python в Windows IoT Базовая, сделайте следующее:
Скачайте пакет 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
Добавьте Python в системный путь.
cmd /c 'setx PATH "%PATH%";c:\python;c:\python\scripts /M' $env:Path += ";c:\python;c:\python\scripts"
Убедитесь, что установлена текущая версия pip.
python -m pip install --upgrade pip
Использование Python в Windows IoT Базовая ARM32
Чтобы получить Python для Windows, необходимо самостоятельно создать двоичные файлы.
Выполните сборку Python для ARM32. Ветвь должна иметь версию 3.8 или выше.
git clone https://github.com/python/cpython cd cpython git checkout 3.8 pcbuild\build.bat -p ARM --no-tkinter
Создание файла .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
Используйте 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"
Проверьте выполнение команды
print('Hello World')
.python -c "print('Hello World!');quit()"
Использование Python в Windows IoT Базовая ARM64
Чтобы получить Python для Windows, необходимо самостоятельно создать двоичные файлы.
Клонируйте Python для ARM32 и выполните
get_externals
. Ветвь должна иметь версию 3.8 или выше.git clone https://github.com/python/cpython cd cpython git checkout 3.8 pcbuild\get_externals.bat cd ..
Клонируйте и соберите 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
Выполните сборку Python для ARM64.
pcbuild\build.bat -p ARM64 --no-tkinter
Создание файла .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
Добавьте Python в системный путь.
setx PATH "%PATH%";c:\python;c:\python\scripts /M set PATH=%PATH%;c:\python;c:\python\scripts
Проверьте выполнение команды
print('Hello World')
.python -c "print('Hello World!');quit()"
Ознакомьтесь с пакетами Azure SDK Центра Интернета вещей версии 2 для Python (предварительная версия).
Сначала установите пакет 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
:В браузере перейдите по адресу
https://pypi.org/simple/pbr/
. Проверьте сертификат веб-сайта и обратите внимание, что он выданDigiCert
.Создайте каталог с именем
c:\test
.Запустите
certmgr.msc
из командной строки на настольном компьютере с Windows.В представлении в виде дерева перейдите к
Trusted Root Certification Authorities
. Разверните узел и выберитеCertificates
.Справа найдите
DigiCert High Assurance EV Root
, щелкните правой кнопкой мыши и выберитеAll Tasks
>Export
. Обратите внимание, что существует несколько сертификатовDigiCert
, и они определяются поочередно.В открывшемся диалоговом окне щелкните
Next
.Выберите
DER encoded binary X.509 (.CER)
(это должно быть значение по умолчанию) и щелкнитеNext
.В поле ввода
File name:
укажитеc:\test\DigiCert High Assurance EV Root.cer
.Нажмите кнопку
Next
.Нажмите кнопку
Finish
.Скопируйте
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
На устройстве импортируйте сертификат в корневое хранилище с помощью 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
Попытайтесь установить
azure-iot-device
еще раз.python -m pip install azure-iot-device --no-color
В выходных данных
pip install
могут возникнуть ошибки:Download error for https://files.pythonhosted.org/
. Если вы не видите этого, перейдите к разделуSet up an IoT Hub and create a Device Identity
В браузере перейдите по адресу
https://files.pythonhosted.org/
. Проверьте сертификат веб-сайта и обратите внимание, что он выданGlobalSign
.Повторите эти действия, чтобы экспортировать сертификат
GlobalSign Root CA
с настольного компьютера и импортировать его на устройство.Попытайтесь установить
azure-iot-device
еще раз.
Настройка Центра Интернета вещей и создание удостоверения устройства
Установите Azure CLI (или используйте Azure Cloud Shell) и создайте Центр Интернета вещей Azure.
az iot hub create --resource-group <your resource group> --name <your IoT Hub name>
- Обратите внимание, что эта операция может занять несколько минут.
Добавьте расширение Интернета вещей в 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>
Получите строку подключения устройства с помощью 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>
Отправка простого сообщения телеметрии
Включите мониторинг телеметрии в Центре Интернета вещей с помощью Azure CLI.
az iot hub monitor-events --hub-name <your IoT Hub name> --output table
На устройстве задайте строку подключения устройства в качестве переменной среды с именем
IOTHUB_DEVICE_CONNECTION_STRING
.REM NOTE: there are no quotes set IOTHUB_DEVICE_CONNECTION_STRING=<your connection string here>
Скопируйте скрипт 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 Базовая
Скачайте последнюю версию 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
Создайте 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
Скопируйте 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
Подключитесь к устройству с помощью SSH. Удаленная оболочка PowerShell не будет работать для интерактивного сеанса Docker.
docker build --isolation==process . -t python docker run --isolation==process python
Выведите Hello World.
python -c "print('Hello Python in Containers!')"
Ознакомьтесь с инструкциями по проверке сообщений, отправляемых из облака на устройство с помощью пакета SDK для Интернета вещей Azure.