Сборка Python пакетов для Raspberry Pi с использованием Azure конвейеров - PullRequest
0 голосов
/ 30 марта 2020

Я установил два конвейера для пакета Python. Один для Windows, другой для Linux. Один для Windows работает как положено. Однако, если я скопирую исполняемый файл Linux в Raspberry, он не запустится. Если я дважды щелкну по нему, ничего не произойдет, и если я выполню его с помощью терминала, я получу отказ в разрешении. Если я собираю пакет Python локально на Raspberry, все работает как положено.

В общем, мой вопрос заключается в том, нужно ли специально указывать Linux ARM, чтобы приложение Python работало на моем компьютере? Малина? Если так, как я могу достичь этого? При создании конвейера я могу выбирать только между архитектурой x86 и x64:

enter image description here

Репо можно найти здесь .

Это конвейер, который я использую для построения и публикации:

trigger:
- master

jobs:

- job: 'Raspberry'
  pool:
    name: arm32 # Already tried to use a self-hosted build agent, but didn't get it to work
  variables:
    python.version: '3.7'

  steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '$(python.version)'

    - script: |
        cd AzurePipelinesWithPython
        python -m pip install --upgrade pip
      displayName: 'Install dependencies'

    - script: pip install pyinstaller
      name: 'pyinstaller'

    - script: cd AzurePipelinesWithPython && pyinstaller --onefile --noconfirm --clean test.py
      name: 'build'

    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: './AzurePipelinesWithPython/dist/'
        artifactName: 'AzurePipelinesWithPython-raspi-$(python.version)'

Извините, что не могу опубликовать репо Azure DevOps, он принадлежит нашей корпоративной подписке и не публикуется c.

1 Ответ

0 голосов
/ 01 апреля 2020

Итак, в основном мой вопрос заключается в том, нужно ли мне специально нацеливать Linux ARM, чтобы приложение Python работало на моей Raspberry?

Нет, вам не нужно указать его для целевой ARM для вашего приложения. Особенно, я думаю, что это не будет иметь большого эффекта, даже если вы удалите эту задачу. Если вы используете размещенный агент , он по умолчанию содержит разные версии python. И если вы используете агент с собственным размещением, вам просто нужно убедиться, что подходящая версия установлена ​​на локальном компьютере.

Однако, если я скопирую исполняемый файл Linux в Raspberry, он выиграет ' Т беги. Если я дважды щелкну по нему, ничего не произойдет, и если я выполню его с помощью терминала, я получу отказ в разрешении.

Из-за странного поведения, с которым вы столкнулись, я полагаю, это не было результатом Azure Devops сторона. Я искал и нашел несколько подобных проблем, как у вас, см. один , два , три , четыре .

Так что я думаю, что это больше похоже на распространенную проблему в среде Linux, попробуйте использовать терминал для запуска этой программы после использования chmod u+x file_name, чтобы дать файлу разрешение на запуск. Кроме того, вы можете использовать file xx.exe , чтобы проверить, правильно ли создан exe для Linux, если проблема не устранена. Надеюсь, что все вышеизложенное дает правильное направление для решения вашей проблемы.

...