我正在尝试使用 powershell 在 Azure VM 上远程安装带有 pip 包的 python。部署到 VM 的脚本:
Start-Process 'F:\python-3.9.5-amd64.exe'-ArgumentList ("/passive", "InstallAllUsers=1", "PrependPath=1", "Include_test=0", "Include_pip=1") -Wait
Start-Sleep -s 120
& pip install urllib3 --no-index --find-links 'F:\urllib3-1.26.5-py2.py3-none-any.whl'
& pip install selenium --no-index --find-links 'F:\selenium-3.141.0-py2.py3-none-any.whl'
Python 在 Program Files 中正确安装,并添加了环境变量,但pip
无法识别。
我尝试在脚本 ( set
/ setx
..) 中为 Python 和 Scripts 文件夹设置环境变量,但无济于事。如果我通过 RDP 连接到机器,机器pip
会被识别,并且软件包安装正确。python
也无法被识别(已尝试python -m pip install ...
)。
为什么 pip 无法被识别?
答案1
您的脚本执行了安装,但没有在安装和执行之间刷新环境pip
。因此,pip
在路径中找不到可执行文件。
检索值$env:PATH
并添加自定义路径
$scriptblock = {
$env:computername
[Environment]::GetEnvironmentVariable("Path","Machine")
# add pip path to $env:path variable temporarily
$env:path += ";c:\whatever\pip"
# run pip here
python -m pip install package
}
Invoke-Command -ComputerName mycomputer -ScriptBlock $scriptblock
注意巧克力味可能是安装软件的更好方法;它还提供了refreshenv
重新加载环境变量的命令。