gpt4 book ai didi

python - 从twisted运行django时出现导入错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:29 24 4
gpt4 key购买 nike

我正在尝试运行一个 Twisted 程序,该程序可以处理一些请求,还可以通过 WSGI 运行 Django 应用程序,并将一些请求路由到它。文件夹结构是这样的:

code
|-- __init__.py
|-- main.py
|-- django_proj
| |-- __init__.py
| |-- manage.py
| |-- django_proj
| | |-- __init__.py
| | |-- settings.py
| | |-- ...
| |-- django_app
| | |-- __init__.py
| | |-- models.py
| | |-- ...

现在,在 django_proj/django_proj/settings.py 中,我有这一行:

INSTALLED_APPS = (
...
'django_proj.django_app',
...
)

当我在 code 文件夹中运行该程序时,如下所示:python ./main.py,并且它运行没有问题。但是,当我需要使用 manage.py 运行某些内容时,例如运行 manage.py migrate 我需要进入 code/django_proj 文件夹并运行它;但随后它说:

ImportError: No module named django_app

我需要将 INSTALLED_APPS 中的行更改为:

INSTALLED_APPS = (
...
'django_app',
...
)

但是如果我这样保留它,我就无法运行python ./main.py!因为它会说:

ImportError: No module named django_app

所以到目前为止,我常常根据我当时需要做的事情来回更改这条线。
我应该怎么做才能解决这个问题?

最佳答案

两种解决方案:将 manage.py 移至 code(推荐)。

或者:使用python -m django_proj.manage

无论您选择什么,您都必须将所有相对导入更改为绝对导入。也就是说,从 django_proj.settingsdjango_proj.django_proj.settings

相对导入很糟糕,会导致您现在遇到的问题。 (这就是为什么相对导入已从 Python 3 中删除的原因。)

有关详细信息,请参阅 this answer来自Martijn Pieters .

<小时/>

我现在看到您的代码有一个__init__.py。真的需要吗?如果没有,请将其删除。如果需要,即使使用我的解决方案,您仍将使用相对于 code 的导入。

这意味着您必须将所有脚本移出 code,并为所有导入添加 code 前缀。

关于python - 从twisted运行django时出现导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30144131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com