--我正在尝试使用从python中复制, --我已经从CLI中使用了它,而且它正在工作!
我已经成功地执行了以下命令:
上传:
set AZCOPY_SPA_CLIENT_SECRET=<my client secret>
azcopy login --service-principal --application-id=<removed> --tenant-id=<removed>
azcopy copy "D:\azure\content" "https://dummyvalue.blob.core.windows.net/container1/result4" --overwrite=prompt --follow-symlinks --recursive --from-to=LocalBlob --blob-type=Detect同样用于下载
azcopy copy "https://dummyvalue.blob.core.windows.net/container1/result4" "D:\azure\azcopy_windows_amd64_10.4.3\temp\result2" --recursive现在,--我想使用python自动化这些命令,我知道azcopy也可以使用SAS键,但这超出了我的工作范围。
第一次尝试:
from subprocess import call
call(["azcopy", "login", "--service-principal", "--application-id=<removed>", "--tenant-id=<removed>"])第二次尝试:
import os
os.system("azcopy login --service-principal --application-id=<removed> --tenant-id=<removed>")我在我的环境中已经有了set AZCOPY_SPA_CLIENT_SECRET。
我在windows上使用python 3。
每次我收到这个错误:
未能执行登录命令:服务主体auth需要应用程序ID和客户端机密/证书
注意:如果您的凭据是在最后5分钟内创建的,请稍等几分钟再试一次。
我不想用Azure来做这个工作
有人能帮我解决这个问题吗?
发布于 2020-06-03 07:06:27
这是因为set cmd没有设置永久的环境变量,它只在当前的windows提示符中生效。
您应该通过UI手动设置环境变量,或者尝试使用setx命令。
我使用您的代码进行了测试,根据UI手动设置环境变量 of AZCOPY_SPA_CLIENT_SECRET,然后代码可以在没有问题的情况下运行(可能需要几分钟才能生效)。
测试结果如下:

https://stackoverflow.com/questions/62151754
复制相似问题