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 包的主要内容,如果未能解决你的问题,请参考以下文章