【问题标题】:Upgrade python to 2.7 and Django to 1.4, but it tells me No module named *将 python 升级到 2.7,将 Django 升级到 1.4,但它告诉我 No module named *
【发布时间】:2012-05-29 18:41:56
【问题描述】:

我刚刚在我的 Ubuntu 服务器上将我的 python 升级到 2.7,并将 Django 重新安装到 1.4。我使用 python Flup 将 Django 应用程序作为 fastcgi 运行,但是当我尝试重新启动应用程序时,它一直告诉我 No module named *

例如

File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
...
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named *

问题是由旧Django(1.3)项目中的manage.py文件引发的,但根据文档https://docs.djangoproject.com/en/dev/releases/1.4/#updated-default-project-layout-and-manage-py

这就是我使用 python-flup 运行项目的方式

exec python ./manage.py runfcgi host=127.0.0.1 port=8083 maxchildren=40 pidfile=$PIDFILE --settings=expand.settings

旧样式的 manage.py 将继续像以前一样工作,直到 Django 1.6。在 1.5 中会引发 DeprecationWarning

【问题讨论】:

  • 可能有助于查看更多错误输出以及导入并导致异常的文件部分。
  • @JonasGeiregat 我刚刚发现一些项目可以毫无问题地启动。确实有这个问题的 django 项目是由第 14 行的 Django 的 ./manage.py 文件引起的。
  • 您是否按照 1.4 发行说明中的​​说明将旧 (1.3) manage.py 文件替换为新文件? docs.djangoproject.com/en/dev/releases/1.4/…
  • manage.py 文件是 Django 1.3 生成的,我现在用的是 1.4。但是我在不同的服务器上做了同样的升级,一切都很顺利。
  • Jonas,据我所知,django 1.4 支持 1.3 中现有的 manage.py 文件,无需任何更改

标签: python django


【解决方案1】:

我通过查看 django 的源代码猜测你的项目布局或 python 路径有问题。

execute_from_command_line(sys.argv)

运行以下 sn-p(来自 django/core/management/init.py),这很可能是您的错误的原因:

# Import the project module. We add the parent directory to PYTHONPATH to
# avoid some of the path errors new users can have.
sys.path.append(os.path.join(project_directory, os.pardir))
import_module(project_name)
sys.path.pop()

【讨论】:

  • 我在settings.py中发现了问题,对于INSTALLED_APPS,我无法使用apps.*导入应用程序,我必须使用apps.app1、apps.app2等。仍然感谢很多@Jonas
  • @codingrhythm:如果 Jonas 让你到达那里,那么请接受他的回答。
猜你喜欢
  • 2020-06-24
  • 2022-07-22
  • 2020-04-23
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多