我已经在我本地的Windows机器上构建了一个简单的Django应用程序,它通过利用Django-Pyodbc-Azure后端连接到托管在Azure上的SQL Server。我可以在我的本地机器上很好地连接到数据库,我的应用程序运行也没有问题。
然而,我没有在将应用程序部署到Azure的应用程序服务的过程中,我遇到了问题。部署本身运行时没有问题,但是我的日志中显示了以下错误消息:
Traceback (most recent call last): File "/home/site/wwwroot/antenv3.6/lib/python3.6/site-packages/sql_server/pyodbc/base.py", line 15, in <module>
import pyodbc as Database
ImportError: libodbc.so.2: cannot open shared object file: No such file or directory
File "/home/site/wwwroot/antenv3.6/lib/python3.6/site-packages/sql_server/pyodbc/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading pyodbc module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading pyodbc module: libodbc.so.2: cannot open shared object file: No such file or directory我的requirements.txt文件如下所示:
Django==2.1.4
django-pyodbc-azure==2.1.0.0
pyodbc==4.0.25
pytz==2018.7再一次..。这在我的Windows机器上运行得很好。但是当我部署到Azure时,我得到了这个错误。
我怀疑这与在Azure的基于LINUX的应用程序服务上没有正确安装Pyodbc后端有关吗?有人有解决这个问题的经验吗?
发布于 2019-01-09 18:34:29
在使用Linux版本时,我在pyodbc包中遇到了同样的问题。我使用的是基于Windows的web-app,但不得不从头开始重建,意外地选择了Linux版本。
一旦切换回Windows版本,我使用Python3.6并遵循以下步骤(基于部署flask应用程序的博客https://blogs.msdn.microsoft.com/pythonengineering/2016/08/04/upgrading-python-on-azure-app-service/):
将Django web应用程序部署到Azure
在门户中点击"Web App">"New"
<webappname>settings.py”中添加
此外,要连接到数据库,请将数据库设置为:
OPTIONS[driver] = 'SQL Server Native Client 11.0'OPTIONS[MARS_Connection] = 'True'
请确保django项目的基目录中有以下文件:
ptvs_virtual_proxy.py.SkipPythonDeploymentweb.config确保您有key="DJANGO_SETTINGS_MODULE" value "<django-project-name>.settings" (请参见below)
pip freeze并将内容放入requirements.txt (如下所示)<pip freeze>H174requirements.txt>一旦部署说“成功”,请转到Kudu (<代码>D75),然后运行<代码>D76。这应该是成功的,并且只需要在您更新package.
python manage.py collectstatic之后提交所有管理文件,或者您可以设置静态文件,如this,然后在Kudu中运行D:\home\python364x64\python.exe D:\home\site\wwwroot\manage.py collectstatic )web.config文件:
<configuration>
<appSettings>
<add key="WSGI_HANDLER" value="<django-project-name>.wsgi.application"/>
<add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
<add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
<add key="DJANGO_SETTINGS_MODULE" value="<django-project-name>.settings" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<httpErrors errorMode="Detailed"></httpErrors>
<handlers>
<add name="PythonHandler" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python364x64\python.exe|D:\home\python364x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
</handlers>
<rewrite>
<rules>
<rule name="Static Files" stopProcessing="true">
<conditions>
<add input="true" pattern="false" />
</conditions>
</rule>
<rule name="Configure Python" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{REQUEST_URI}" pattern="^/static/.*" ignoreCase="true" negate="true" />
</conditions>
<action type="Rewrite" url="handler.fcgi/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>requirements.txt文件:
cycler==0.10.0
Django==1.11.15
django-pyodbc-azure==1.11.15.0
djangorestframework==3.6.3
djangorestframework-jsonp==1.0.2
pyodbc==4.0.25发布于 2019-01-01 10:00:22
请转到您的web应用的scm站点,然后尝试手动安装抛出错误的模块。
具体操作步骤请参考此article。
https://stackoverflow.com/questions/53989068
复制相似问题