为什么我的 Django 应用程序在 Azure 上失败且 UUID 语法无效
Why is my Django App failing on Azure with UUID invalid syntax
我的 Django 应用程序在 Python 3.8.2 和 Django 3.0.5 的 macOS Catalina 上本地运行良好。我将它作为 WebApp 从 Github 选择 Python 3.8 部署到 Azure。
我已经配置了 Postgres 数据库、存储帐户和 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 文件并重新部署。这解决了问题。
这是 python-2.x syntax. In python-2.x 有两种类型的整数值:int
和 long
。 long
最后有一个 L
后缀。 int
是固定范围,long
是任意范围:只要有足够的内存,它就可以表示数字。
可以使用 L
后缀指定这是 long
,而不是 int
。例如在python-2.x中,可以这样写:
>>> type(1)
<type 'int'>
>>> type(1L)
<type 'long'>
在python-3.x中,两者合并为int
,一个int
可以表示任意大数字,所以不再需要这样的后缀。因此,您正在使用为 python-2.x 设计的库和解释 python-3.x.
的解释器
我建议不要使用这个(这个版本)库。查看是否有 python-3.x 的版本,或者尝试寻找替代方案。 python-2.x 自 2020 年 1 月 1 日起不再受支持,因此继续在 python-2.x 上开发也不是一个好主意。此外 python-2.x 和 python-3.x 在很多方面都有所不同。它不仅仅是一种 "extended" 语言。例如,map
和 filter
的工作方式是不同的。因此,您最好不要尝试 "fix" 这个问题,因为很可能会弹出一个新问题,或者更糟的是,隐藏在雷达之下。
从头开始重建虚拟环境,重新生成 requirements.txt 文件,然后重新部署解决了问题。
我的 Django 应用程序在 Python 3.8.2 和 Django 3.0.5 的 macOS Catalina 上本地运行良好。我将它作为 WebApp 从 Github 选择 Python 3.8 部署到 Azure。 我已经配置了 Postgres 数据库、存储帐户和 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 文件并重新部署。这解决了问题。
这是 python-2.x syntax. In python-2.x 有两种类型的整数值:int
和 long
。 long
最后有一个 L
后缀。 int
是固定范围,long
是任意范围:只要有足够的内存,它就可以表示数字。
可以使用 L
后缀指定这是 long
,而不是 int
。例如在python-2.x中,可以这样写:
>>> type(1)
<type 'int'>
>>> type(1L)
<type 'long'>
在python-3.x中,两者合并为int
,一个int
可以表示任意大数字,所以不再需要这样的后缀。因此,您正在使用为 python-2.x 设计的库和解释 python-3.x.
我建议不要使用这个(这个版本)库。查看是否有 python-3.x 的版本,或者尝试寻找替代方案。 python-2.x 自 2020 年 1 月 1 日起不再受支持,因此继续在 python-2.x 上开发也不是一个好主意。此外 python-2.x 和 python-3.x 在很多方面都有所不同。它不仅仅是一种 "extended" 语言。例如,map
和 filter
的工作方式是不同的。因此,您最好不要尝试 "fix" 这个问题,因为很可能会弹出一个新问题,或者更糟的是,隐藏在雷达之下。
从头开始重建虚拟环境,重新生成 requirements.txt 文件,然后重新部署解决了问题。