#python #azure #azure-pipelines
Вопрос:
Я пытаюсь написать первый конвейер Azure DevOps, и у меня возникли проблемы с запуском моих тестов. Вот мой трубопровод
- stage: Build
displayName: Build stage
jobs:
- job: 'Build'
pool:
vmImage: '$(vmImageName)'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(pythonVersion)'
displayName: 'Use Python $(pythonVersion)'
- script: |
python3 -m venv venv
source venv/bin/activate
python3 -m pip install --upgrade pip
pip3 install setup
pip3 install -r requirements.txt
workingDirectory: $(projectRoot)
displayName: 'Install requirements'
- script: |
python3 PoC1/tests.py
displayName: 'Run unittests'
Проблема в том, что он останавливается на unittest, расположенном в каталоге PoC1 с:
File "PoC1/tests.py", line 2, in <module> import requests ModuleNotFoundError: No module named 'requests'
После установки всех требований у меня есть вывод:
Successfully installed azure-core-1.18.0 azure-functions-1.7.2 azure-storage-blob-12.8.1 certifi-2021.5.30 cffi-1.14.6 charset-normalizer-2.0.4 cryptography-3.4.8 idna-3.2 isodate-0.6.0 msrest-0.6.21 oauthlib-3.1.1 pycparser-2.20 requests-2.26.0 requests-oauthlib-1.3.0 six-1.16.0 unittest-xml-reporting-3.0.4 urllib3-1.26.6
Таким образом, кажется, что все установлено правильно, но не может найти модуль запросов во время выполнения моих тестов. У вас есть какие-либо идеи, в чем может быть проблема?
Комментарии:
1. Я думаю, что лучше всего задать этот вопрос в сообществе «DevOps».
Ответ №1:
Вы устанавливаете все необходимые зависимости внутри venv и выполняете сценарий вне его, поэтому при попытке запустить файл у вас нет видимости этих пакетов. Вы можете установить пакеты за пределами venv или использовать venv/bin/python3 для запуска файла вместо этого.
Комментарии:
1. Это не похоже на то, что после использования «source venv/bin/activate» я могу запустить любой скрипт, используя этот venv и установленные в нем пакеты?
2. Я считаю, что происходит то, что ваш
script
раздел является изолированным процессом, и он не выполняет предыдущие задачи в терминале venv. Он создает venv, но на самом деле не использует его. При использованииvenv/bin/python3
будут использоваться пакеты, которые вы в нем установили.3. Похоже, что вы правы. Большое спасибо за вашу помощь 🙂
4. @Serfer Не волнуйся! Рад, что смог помочь 🙂