gpt4 book ai didi

python - 在 PyCharm 中使用 python 发布 azure functionapp

转载 作者:行者123 更新时间:2023-12-03 02:41:51 27 4
gpt4 key购买 nike

我有一个 azure 功能应用程序,用于简单的测试目的。为了(半)自动运行一些测试,我希望能够从 python 脚本中自动将一组函数应用程序上传到 azure。

因此我os.chdir()进入相应的文件夹,然后尝试运行发布命令。

如果我手动运行发布命令( func azure functionapp publish <name> --python --build remote ),一切正常。但是,如果我从 PyCharm 中调用该命令,我总是会收到错误(此处被截断)

The format of value 'Bearer eyJ0eXAiO...
' is invalid

我的Python代码如下所示:

import subprocess
import shutil

try:
result = subprocess.run([
shutil.which('func'),
'azure', 'functionapp',
'publish', azure_function_app_resource_name,
'--python',
'--build remote'
], text=True)
if result.returncode > 0:
print('Failed')
else:
print('OK')
except FileNotFoundError:
print('Failed')

在执行此操作之前,我通过运行和评估以下语句的输出来确保 azure cli/core 函数可用。这工作完美。

subprocess.run([shutil.which('az'), '--version'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
subprocess.run([shutil.which('func'), '--version'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)

我在python中也可以毫无问题地获取功能app的appsettings,所以不是未登录的问题:

result = subprocess.run([
shutil.which('az'), 'functionapp', 'config', 'appsettings', 'list',
'--name', azure_function_app_resource_name,
'--resource-group', azure_resource_group_name
], capture_output=True, text=True)

更新:适用于 Windows 10、Python 3.7、PyCharm 2019.3.4

有人有想法或工作代码吗?

注意:我知道 azure.core.cli存在,但是,它的文档记录很差,并且对 azure 核心功能工具没有帮助。

最佳答案

事实证明,PyCharm 设置了一个名为 PYCHARM_HOSTED 的环境变量。我的调查表明它用于识别脚本是否从 PyCharm 内部运行,但显然它会以某种方式影响发布过程。

为了成功执行构建过程,可以在运行子过程之前从 python 脚本中删除它:

import subprocess
import shutil
import os

if 'PYCHARM_HOSTED' in os.environ:
# try/except would be more pythonic, but longer
del os.environ['PYCHARM_HOSTED']
try:
result = subprocess.run([
shutil.which('func'),
'azure', 'functionapp',
'publish', azure_function_app_resource_name,
'--python',
'--build remote'
], text=True)
if result.returncode > 0:
print('Failed')
else:
print('OK')
except FileNotFoundError:
print('Failed')

关于python - 在 PyCharm 中使用 python 发布 azure functionapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60856148/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com