Python 从twisted运行django时的恐惧

Python 从twisted运行django时的恐惧,python,django,twisted,python-import,Python,Django,Twisted,Python Import,我正在尝试运行Twisted程序,它提供一些请求,还通过WSGI运行Django应用程序,并将一些请求路由到它。文件夹结构如下所示: code |-- __init__.py |-- main.py |-- django_proj | |-- __init__.py | |-- manage.py | |-- django_proj | | |-- __init__.py | | |-- settings.p

我正在尝试运行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-mdjango\u proj.manage

无论您选择什么,都必须将所有相对导入更改为绝对导入。也就是说,从
django\u项目设置
django\u项目设置

相对进口是令人讨厌的,并导致你现在正在经历的那种问题。(这就是从Python 3中删除相对导入的原因。)

有关详细信息,请参阅


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


这意味着您必须将所有脚本移出
code
,并在第二种方式上用
code

作为所有导入的前缀:它给了我
ImportError:没有名为settings的模块。第二种方式也是如此。谢谢@Andrea!在
manage.py
内部更改设置导入,并通过
python-m
运行即可!我个人认为第二种方法更好,因为它不会破坏django应用程序的结构,也不会污染带有django应用程序实用程序的
code
文件夹。你能详细解释一下为什么推荐第一种方法吗?@sazary:因为
python-mdjango_proj.manage
并不“明显”,人们可能会尝试运行
python manage.py