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 &lt;app-name&gt; -l &lt;location-name&gt; 重新部署更新

使用本地 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 函数

无法在 azure 函数应用程序中创建 python 函数

BlockBlobService 类位于 Python Azure 模块中的啥位置?

如何通过 Python 中的 Flask 传递内存中的 Azure Blob

Django 在执行 python manage.py runserver-“raise ImproperlyConfigured("Error loading psycopg2 modul