我正在构建一个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 *
[编辑]
而且
projectname
和filename
都应该在INSTALLED_APPS
中。解释更多我的想法。你的
projectname.filename
是指内部projectname
文件夹,所以我想它是在寻找不存在的projectname/projectname/filename.py
文件。只需将filename
添加到INSTALLED_APPS
将使作用域全局可用,因此可以称为is。关于python - 错误:没有名为[文件名]的模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14113459/