运行"sudo python3 manage.py 迁移"时的回溯



我一直使用windows os进行开发。我对linux中的命令了解甚少。我试图在AWS EC2实例上部署django应用程序,但在试图迁移到数据库时卡住了。我运行命令:sudo python3 manage.py migrate,但我一直得到以下错误:

Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 11, in main
from django.core.management import execute_from_command_line
File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 13, in <module>
from django.apps import apps
File "/usr/local/lib/python3.5/dist-packages/django/apps/__init__.py", line 1, in <module>
from .config import AppConfig
File "/usr/local/lib/python3.5/dist-packages/django/apps/config.py", line 7, in <module>
from django.utils.deprecation import RemovedInDjango41Warning
File "/usr/local/lib/python3.5/dist-packages/django/utils/deprecation.py", line 5, in <module>
from asgiref.sync import sync_to_async
File "/usr/local/lib/python3.5/dist-packages/asgiref/sync.py", line 114
launch_map: "Dict[asyncio.Task[object], threading.Thread]" = {}
^
SyntaxError: invalid syntax

在windows os的开发过程中,每当我在同一个项目上运行python manage.py migrate时,一切都运行良好。但是当我从github克隆它时,我无法使用linux ubuntu命令迁移。请问我该如何解决这个问题?

asgiref需要Python 3.6或更新版本,但您的Ubuntu Linux安装已经安装了Python 3.5。该项目使用的语法在3.5中不可用。

你想要验证你的项目需要什么Python版本(尝试运行python3 -V), then install that version onto your Linux machine (in addition to the standardpython3 ' package)。你可以用死蛇PPA来做这件事。例如安装Python 3.9:

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.9 python3-pip

从那里,使用sudo python3.9 ...。请记住,您需要再次安装项目需求。如果您一直在使用虚拟环境,则需要升级它:

$ python3.9 -m venv --upgrade [your venv path]

Django 3。x版本的所有版本都可以使用Python 3.6到3.9,但您的项目可能有其他依赖项,这会缩小列表范围。