azure 应用服务中的 Python ModuleNotFoundError 包
Posted
技术标签:
【中文标题】azure 应用服务中的 Python ModuleNotFoundError 包【英文标题】:Python ModuleNotFoundError package in azure app service 【发布时间】:2020-04-09 03:25:08 【问题描述】:我在 Azure 中使用 Python3.7 (Flask) webapp
我也被确认运行 Python3.7 的 Web 应用 Stack 运行时
项目在 127.0.0.1:5000 (localhost) 中运行良好
当我尝试将脚本部署到 azure webapp(应用服务)中时
我收到了这个错误:-
File "/home/site/wwwroot/init.py", line 2, in <module>
2019-12-16T15:50:45.275997228Z from flask_sqlalchemy import SQLAlchemy
2019-12-16T15:50:45.276001128Z ModuleNotFoundError: No module named 'flask_sqlalchemy'
我已经在 venv (env) 中安装了 Flask-SQLAlchemy 正在运行
$ pip install Flask-SQLAlchemy
我还将 Flask-SQLAlchemy 导入到 requirements.txt 中
flask_sqlalchemy==2.4.1
sqlalchemy==1.3.11
click==6.7
Flask==1.0.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
Werkzeug==0.14.1
flask_admin==1.5.3
flask_login==0.4.1
pyodbc==4.0.27
我也跑
$ pip install -r requirements.txt
我的 pip 版本是 19
$ pip -V
pip 19.0.3 from /<project_path>/venv/lib/python3.7/site-packages/pip (python 3.7)
在venv中安装包
$ ls venv/lib/python3.7/site-packages/
Flask-1.0.2.dist-info flask_sqlalchemy
Flask_Admin-1.5.3-py3.7.egg-info itsdangerous-0.24-py3.7.egg-info
Flask_Login-0.4.1-py3.7.egg-info itsdangerous.py
Flask_SQLAlchemy-2.4.1.dist-info jinja2
Jinja2-2.10.dist-info markupsafe
MarkupSafe-1.0-py3.7.egg-info pip
SQLAlchemy-1.3.11.dist-info pip-19.0.3.dist-info
WTForms-2.2.1.dist-info pkg_resources
Werkzeug-0.14.1.dist-info pyodbc-4.0.27.dist-info
__pycache__ pyodbc.cpython-37m-darwin.so
click setuptools
click-6.7.dist-info setuptools-40.8.0.dist-info
easy-install.pth sqlalchemy
easy_install.py werkzeug
flask wheel
flask_admin wheel-0.33.6.dist-info
flask_login wtforms
.
【问题讨论】:
也许它不使用你的 venv 来运行它。 在项目文件夹中作为默认的 azure 查找 venv 环境 我对同样的包也有同样的问题。 【参考方案1】:问题是因为venv
没有将antenv.tar.gz
文件导出到webapp中
请不要使用az webapp up --sku F1 -n <app-name> -l <location-name>
重新部署更新
使用本地 Git 部署到 Azure 应用服务:-
https://docs.microsoft.com/en-us/azure/app-service/deploy-local-git
【讨论】:
【参考方案2】:我会检查我的激活环境是否存在这种情况,因为您已经检查了 SQLAlchemy 的包是否已在文件夹中可用。
可能发生的情况是您正在使用系统 pip (pip3) 将 flask-sqlalchemy 安装到系统库,然后尝试从您的 venv 中使用它。也可能发生的情况是您成功将flask-sqlalchemy安装到您的venv,然后使用系统python(不是venv)尝试导入它。
您可以尝试从您的 venv 安装软件包吗:
https://***.com/a/59281844/6049604
补充参考:
https://docs.microsoft.com/en-us/azure-stack/user/azure-stack-dev-start-howto-vm-python?view=azs-1910
https://www.reddit.com/r/flask/comments/9r0kmz/python_37_error_with_flasksqlalchemy/
希望对你有帮助。
【讨论】:
问题不只是flask-sqlalchemy包requirements.txt中的任何新包没有安装我还有另一个应用程序工作正常可能是因为wwwroot中的antenv.tar.gz文件我的应用程序没有问题antenv.tar.gz 所以 venv 不能工作,因为 venv 在 webapp 中导入以上是关于azure 应用服务中的 Python ModuleNotFoundError 包的主要内容,如果未能解决你的问题,请参考以下文章
如何基于 Azure 中的服务总线队列自动缩放 Python webjob?
使用 Python 脚本的 ADF 管道中的 Azure 函数
BlockBlobService 类位于 Python Azure 模块中的啥位置?
如何通过 Python 中的 Flask 传递内存中的 Azure Blob
Django 在执行 python manage.py runserver-“raise ImproperlyConfigured("Error loading psycopg2 modul