我已经安装了Windows代理,需要能够运行Python脚本。我知道我需要安装Python,但我不知道如何安装。
我将标准安装的Python文件添加到
$AGENT_TOOLSDIRECTORY/
Python/
3.8.2/
x64/
{tool files}
x64.complete
重新启动了代理,但现在怎么办?如何将其与能力联系起来?我缺少什么?
编辑:我需要运行这个YAML任务
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
addToPath: true
- script: |
python -m pip install --upgrade pip
pip install -r requirements.txt
displayName: 'Install dependencies'
- task: BatchScript@1
displayName: 'Run script make.bat'
inputs:
filename: make.bat
arguments: html
我已经在Windows 10笔记本电脑上设置了一个自托管代理(我有admin访问权限(,并且我正在运行Azure DevOps Express 2020。
我根据下载和配置代理中的说明找到、下载并安装了一个代理。我使用了vsts-agent-win-x64-2.170.1.zip
,并将其设置为作为服务运行,(我想任何手动运行它的人都需要仔细检查它是否在放映时运行(。我还在powershell中以admin的身份运行了install命令!
要安装Python版本,我需要从Python.org的ftp站点下载合适的安装程序,例如,对于3.7.9,我使用了python-3.7.9-amd64.exe
。然后,我从命令行(CMD以管理员身份运行(运行此命令,而不使用UI:python-3.7.9-amd64.exe /quiet InstallAllUsers=0 TargetDir=$AGENT_TOOLSDIRECTORYPython3.7.9x64 Include_launcher=0
(python文档中提供了其他安装选项(
一旦完成(并且它在后台运行,因此将比初始命令花费更长的时间(,您需要创建一个空的{platform}.complete
文件(如本文所述(,在我的情况下,这就是x64.complete
。
这就奏效了!我确实为第一个版本重新启动了服务器,但从那以后我添加了其他python版本,而无需添加
steps:
- task: UsePythonVersion@0
displayName: 'Use Python $(python.version)'
inputs:
versionSpec: '$(python.version)'
(使用变量python.version
将我们设置为版本3.7.9, 3.8.8
的列表(
对我来说,一个关键元素是文件结构,文档中说{tool files}
,这意味着python.exe文件和其他常见的目录,如Lib和Scripts。我最初把它们安装在一个不起作用的子目录中。所以它应该是这样的:
$AGENT_TOOLSDIRECTORY/
Python/
3.7.9/
x64/
Doc/
Lib/
Scripts/
python.exe
...etc...
x64.complete
老实说,我很放心,这没有太多麻烦。我放弃了让Artifacts在prem上工作的尝试。根据我有限的经验,所有这些在云版本上都要容易得多,也更好。然而,我还没有说服我的雇主迈出这一步。。。
我在自己的自托管代理中安装python的方式,您可以参考。
parameters:
- name: projecWorkingDirectory
displayName: 'Working directory of project'
default: $(System.DefaultWorkingDirectory)
- name: pythonVersion
displayName: 'Python version'
default: '3.10.12'
steps:
- script: |
mkdir -p $(Agent.ToolsDirectory)/Python/${{ parameters.pythonVersion }}/x64
mkdir -p $(Agent.ToolsDirectory)/Python/${{ parameters.pythonVersion }}/x64.complete
displayName: 'Create Python local folders'
- script: |
curl -LO https://github.com/actions/python-versions/releases/download/3.10.12-5200619051/python-3.10.12-linux-22.04-x64.tar.gz
tar -xvf python-3.10.12-linux-22.04-x64.tar.gz
workingDirectory: $(Agent.ToolsDirectory)/Python/${{ parameters.pythonVersion }}/x64
displayName: 'Downloaded'
- task: UsePythonVersion@0
inputs:
versionSpec: ${{ parameters.pythonVersion }}
architecture: 'x64'
disableDownloadFromRegistry: true
displayName: 'Use Python ${{ parameters.pythonVersion }}'
- script: |
python -m pip install --upgrade pip
pip install -r requirements.txt
workingDirectory: ${{ parameters.projecWorkingDirectory }}
displayName: 'Install dependencies'
对于这个问题,为了使用安装在本地机器中的python版本。您需要在cmd任务中指向python.exe
物理路径。或者在powershell任务中手动将python.exe
路径添加到环境变量路径中。例如:
在powershell任务中使用本地python:
$env:Path += ";c:{local path to}PythonPython38; c:{local path to}PythonPython38Scripts"
python -V
在CMD任务中使用python:
c:{local path to}PythonPython38python.exe -V
c:{local path to}PythonPython38Scriptspip.exe install
所以,我认为要用私人代理运行python脚本,只需确保python安装在本地,然后指向python.exe路径。有关详细信息,您可以参考本案例。
在使用vs2017-win2016代理在我的管道上执行python之前,我添加了这4个任务:
使用Python 3.x
steps:
- task: UsePythonVersion@0
displayName: 'Use Python 3.x'
使用Pip-Authenticate
steps:
- task: PipAuthenticate@1
displayName: 'Pip Authenticate'
使用命令行任务
steps:
- script: |
python -m pip install --upgrade pip setuptools wheel
failOnStderr: true
displayName: 'install pip for setup of python framework'
使用命令行任务
steps:
- script: 'pip install -r _python-test-harness/requirements.txt'
failOnStderr: true
displayName: 'install python framework project''s specific requirements'
希望能帮助