在将Python Flask Web API部署到Azure Portal时遇到依赖问题 - python

我正在尝试将python flask Web API部署到azure门户,但是遇到依赖项安装问题,如下图所示。
在将Python Flask Web API部署到Azure Portal时遇到依赖问题 - python

我已经在我的azure Web应用程序中添加了扩展-Python 3.5.4 x64,并且对所有依赖项都使用了最新版本,如在requirements.txt文件中所见。

在将Python Flask Web API部署到Azure Portal时遇到依赖问题 - python
有人可以帮忙吗?

我也尝试过从Azure Kudu DebugConsole安装/升级setuptools,但这会导致访问被拒绝的问题。

Kudu Remote Execution Console
Type 'exit' then hit 'enter' to get a new CMD process.
Type 'cls' to clear the console

Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

D:\home>pip install -U setuptools
'pip' is not recognized as an internal or external command,
operable program or batch file.

D:\home>python -m pip install -U setuptools
Downloading/unpacking setuptools from https://files.pythonhosted.org/packages/e7/16/da8cb8046149d50940c6110310983abb359bbb8cbc3539e6bef95c29428a/setuptools-40.6.2-py2.py3-none-any.whl#sha256=88ee6bcd5decec9bd902252e02e641851d785c6e5e75677d2744a9d13fed0b0a
Installing collected packages: setuptools
  Found existing installation: setuptools 2.1
    Uninstalling setuptools:
Cleaning up...
Exception:

Traceback (most recent call last):
  File "D:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "D:\Python34\lib\site-packages\pip\commands\install.py", line 283, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "D:\Python34\lib\site-packages\pip\req.py", line 1431, in install
    requirement.uninstall(auto_confirm=True)
  File "D:\Python34\lib\site-packages\pip\req.py", line 598, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "D:\Python34\lib\site-packages\pip\req.py", line 1836, in remove
    renames(path, new_path)
  File "D:\Python34\lib\site-packages\pip\util.py", line 295, in renames
    shutil.move(old, new)
  File "D:\Python34\lib\shutil.py", line 535, in move
    os.unlink(src)
PermissionError: [WinError 5] Access is denied: 'd:\\python34\\lib\\site-packages\\__pycache__\\easy_install.cpython-34.pyc'

Storing debug log for failure in D:\home\pip\pip.log

参考方案

在Azure WebApps上,除D:\之外,您无权在路径D:\home下执行任何写操作。因此,当您要为默认的python运行时安装

中的pip时,将导致错误D:\Python34

唯一的方法是通过Kudo安装Python网站扩展,并将PermissionError Access is denied配置为使用它而不是默认扩展。现有的SO线程Why is the azure app service django deploy keep failing?有一个答案,其中介绍了可以用来解决该问题的安装。

现在,我看到您已经安装了此扩展,但是您调用的python命令仍然是默认命令。解决方法如下。

通过命令web.config更改环境变量path以覆盖默认值。
在Kudo DebugConsole中更改当前目录,并移至路径set PATH=D:\home\Python34;%PATH%,然后可以直接调用D:\home\Python34,它是新安装的目录。

希望能帮助到你。

Flask Cors无法运作 - python

我正在尝试在Flask应用程序中启用CORS,但无论我把来源如何,似乎总是可以从浏览器访问URL。我不知道我做错了什么。这是我的代码from flask import Flask, jsonify from flask_cors import CORS app = Flask(__name__) CORS(app, resources={r'/*&…

flask:异常后停止服务器 - python

我想在发生未处理的异常时立即停止我的Flask服务器。这是一个例子:from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): 1/0 # argh, exception return 'Hello World!' i…

Flask-Restless的复杂路线(例如“忘记密码”) - python

我希望在使用Flask-Restless时为“忘记密码”功能创建一个途径。我的想法是该请求可能如下所示:POST /api/user/<id>/forgot_password 然后Flask-Restless将此请求发送到我提供的自定义“忘记密码”路由。这样,我可以在用户对象上定义自己的复杂操作(在DB中存储中间内容,电子邮件密码重置链接等)。我…

Flask-RESTful-返回自定义响应格式 - python

我已经按照以下Flask-RESTful文档定义了自定义响应格式。app = Flask(__name__) api = restful.Api(app) @api.representation('application/octet-stream') def binary(data, code, headers=None): resp =…

WTForms Flask(wtf_flask)验证程序如何为RadioField包括“必需”属性 - python

我基本上在寻找的是WTForms的InputRequired()的RadioField等效验证器。我的意思是,当您尝试提交表单而不在具有InputRequired()验证器的StringField字段中输入任何文本时,用户会在文本字段上方看到提示,提示是"Please fill out this field"。我希望用户必须选择male或…