Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PyCharm中使用python发布azure functionapp_Python_Azure_Pycharm_Azure Functions - Fatal编程技术网

在PyCharm中使用python发布azure functionapp

在PyCharm中使用python发布azure functionapp,python,azure,pycharm,azure-functions,Python,Azure,Pycharm,Azure Functions,我有一个azure function应用程序,用于简单的测试目的。为了(半)自动运行一些测试,我希望能够在python脚本中自动将一组函数应用程序上传到azure 因此,我将os.chdir() 如果我手动运行publish命令(func azure functopp publish--python--build remote),一切正常。但是,如果我从PyCharm中调用命令,我总是会得到错误(这里被截断) 我的python代码如下所示: 导入子流程 进口舒蒂尔 尝试: 结果=subproce

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

因此,我将
os.chdir()

如果我手动运行publish命令(
func azure functopp publish--python--build remote
),一切正常。但是,如果我从PyCharm中调用命令,我总是会得到错误(这里被截断)

我的python代码如下所示:

导入子流程
进口舒蒂尔
尝试:
结果=subprocess.run([
shutil.which('func'),
“azure”、“functionapp”,
“发布”,azure\u功能\u应用程序\u资源\u名称,
“--python”,
“--构建远程”
],text=True)
如果result.returncode>0:
打印('失败')
其他:
打印('确定')
除FileNotFoundError外:
打印('失败')
在执行此操作之前,我通过运行并评估以下语句的输出来确保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\u函数\u应用程序\u资源\u名称,
“--资源组”,azure\u资源\u组\u名称
],捕获(输出=True,文本=True)
更新:这是在Windows10、Python 3.7、PyCharm 2019.3.4上实现的

有人有想法或工作代码吗

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

import os
import subprocess
print(u'Test Beginning!')
input('input:')
os.system('func azure functionapp publish yourfunctionname --force')
input('input:')
print(u'Test Endding!')

这段代码在我这边运行得很好,请试一试。(在函数文件夹中运行脚本。)

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

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

导入子流程
进口舒蒂尔
导入操作系统
如果os.environ中的“PYCHARM_HOSTED”:
#try/except会更像python,但时间更长
delos.environ['PYCHARM_HOSTED']
尝试:
结果=subprocess.run([
shutil.which('func'),
“azure”、“functionapp”,
“发布”,azure\u功能\u应用程序\u资源\u名称,
“--python”,
“--构建远程”
],text=True)
如果result.returncode>0:
打印('失败')
其他:
打印('确定')
除FileNotFoundError外:
打印('失败')

失败,出现相同的错误。我应该(也许)注意到我使用windows…@Timm是的,我也是win10 Python 3.7。你能显示错误的屏幕截图吗?在我这方面没有问题。@Timm这是我这方面的截图:。你可以看到它工作得很好,所以win10和python3.7不是原因。好吧,我尝试了一些方法,结果是如果我从cmd调用
python publish.py
,它工作得很好,如果我从PyCharm中启动它,它就失败了。也许是关于环境的问题,但显然是一个完全不同的问题。我将考虑如何重新表述这个问题。仅供参考:我稍微重新措辞了一下,补充了我自己的答案。这就是环境,尽管这是我最不希望影响事情的变量:
PYCHARM\u HOSTED
import os
import subprocess
print(u'Test Beginning!')
input('input:')
os.system('func azure functionapp publish yourfunctionname --force')
input('input:')
print(u'Test Endding!')