为什么我的Django应用程序在Azure上使用UUID无效语法失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的Django应用程序在Azure上使用UUID无效语法失败相关的知识,希望对你有一定的参考价值。

我的Django应用程序在使用Python 3.8.2和Django 3.0.5的macOS Catalina上可以在本地良好运行。我从Github选择Python 3.8将其作为WebApp部署到Azure。我已配置了Postgres DB,存储帐户和WebApp。构建过程成功。WebApp在启动时失败,并带有:

File "/antenv/lib/python3.8/site-packages/django/db/models/fields/__init__.py", line 6, in <module>
     import uuid
File "/antenv/lib/python3.8/site-packages/uuid.py", line 138
     if not 0 <= time_low < 1<<32L:
                                 ^
SyntaxError: invalid syntax

我已验证uuid软件包不在我的requirements.txt文件中。设置数据库环境变量。Collectstatic成功复制了我的静态数据。WebApp与Docker一起运行。

对此有任何帮助,不胜感激。

编辑

重新构建虚拟环境和重新生成的requirements.txt文件并重新部署。这解决了问题。

答案

这是语法。在中,有两种类型的整数值:intlonglong在结尾处带有L后缀。 int的范围是固定的,long的范围是任意的:只要有足够的内存,它就可以表示数字。]

可以用L后缀指定这是long,而不是int。例如在中,可以写:

>>> type(1)
<type 'int'>
>>> type(1L)
<type 'long'>

中,两个合并为int,并且int可以表示任意大数,因此不再需要这样的后缀。因此,您正在使用为设计的库,该库带有解释的解释器。

我建议不要使用此(此版本)库。查看是否有的发行版,或尝试查找替代版本。自2020年1月1日起不再支持,因此继续开发也不是一个好主意。此外,在相当多的区域中有所不同。它不仅是一种“扩展”语言。例如mapfilter的工作方式是不同的。因此,您最好不要尝试“解决”此问题,因为很可能会弹出一个新的问题,甚至更糟的是,它隐藏在雷达下。

另一答案

从头开始重建虚拟环境,重新生成requirements.txt文件,然后重新部署解决了该问题。

以上是关于为什么我的Django应用程序在Azure上使用UUID无效语法失败的主要内容,如果未能解决你的问题,请参考以下文章

Django ORM 和 Azure SQL

Azure 上的 Django 应用错误地从 Azure Blob 加载静态文件

DevOps 和 Azure 应用服务中的环境变量

在 azure 上使用 Angular 应用程序部署 Web API2.0

使用 azure 作为 Django 的存储后端(使用 django-storages)

Django rest 框架 - 将图像上传到 Azure 存储