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

时间:2018-11-27 13:02:48

标签: python pip azure-web-app-service azureportal

我正在尝试将 python flask web API 部署到 azure门户,但是遇到依赖关系安装问题,如下图所示。 enter image description here

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

enter image description here 有人可以帮忙吗?

我也尝试过此操作-从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

1 个答案:

答案 0 :(得分:0)

在Azure WebApp上,除D:\之外,您无权在路径D:\home下执行任何写操作。因此,当您要为D:\Python34中的默认python运行时安装pip时,将导致错误PermissionError Access is denied

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

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

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

希望有帮助。