我正在构建一个Django应用程序,正在迁移到Heroku和Heroku Postgres。当我运行“python manage.py runserver”甚至“heroku run python manage.py runserver”时,终端返回错误“error:No module named filename”(错误:没有名为filename的模块),文件名是位于包含models.py和views.py文件等的主项目文件夹中的应用程序文件夹。请参阅下面的文件结构。
我已经在我安装的应用程序中列出了应用程序文件夹,当我为projectname运行“ls”时,它就会出现,所以我很困惑为什么找不到它。
我使用startapp启动了一个新的应用程序,并将旧应用程序的内容移到另一个应用程序上,以查看它是否异常。这似乎只发生在试图让Heroku工作之后。
这是我这个项目的文件结构:

projectname/
      manage.py
      requirements.txt
      Procfile
      projectname/
           templates/
           __init__.py
           settings.py
           urls.py
           wsgi.py
      filename/
           __init__.py
           admin.py
           models.py
           tests.py
           urls.py
           views.py
      static/
      venv/

我已经挣扎了一天多了,所以如果能帮我度过难关,我将不胜感激!
编辑:这里是我在代码中提到文件名的所有地方:
在admin.py中作为“from projectname.filename.models import*”
在URLconf下的projectname/urls.py中,显示为include('filename.urls',
'命名空间=文件名')
在filename/urls.py中显示为“from filename import*”,在URLconf下显示为“urlpattents=patterns('filename.views'…)
在views.py中作为“from filename.models import*”
我也在venv中运行了'heroku run python manage.py syncdb',它仍然返回错误“error:No module named filename”。

最佳答案

我想这条线

In admin.py as 'from projectname.filename.models import *'

是给问题。projectname部分IMHO不应该在那里,所以该行应该只是
from filename.models import *

[编辑]
而且projectnamefilename都应该在INSTALLED_APPS中。
解释更多我的想法。你的projectname.filename是指内部projectname文件夹,所以我想它是在寻找不存在的projectname/projectname/filename.py文件。只需将filename添加到INSTALLED_APPS将使作用域全局可用,因此可以称为is。

关于python - 错误:没有名为[文件名]的模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14113459/

10-16 20:19