将Python安装到自托管的Windows生成代理



我已经安装了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'

希望能帮助

相关内容

  • 没有找到相关文章

最新更新