当前位置: 首页 > 知识库问答 >
问题:

错误:没有名为[filename]的模块

杜嘉木
2023-03-14

我正在构建一个Django应用程序,并且正在迁移到Heroku和Heroku Postgres。当我运行“pythonmanage.pyrunserver”甚至“heroku runpythonmanage.pyrunserver”终端返回错误“错误:没有名为文件名的模块”-文件名是位于我的主项目文件夹中的应用程序文件夹,其中包含我的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 为“从项目名称.文件名.模型导入*”
  • 在projectname/urls中.py在URLconf下作为include('filename.urls',
    'namespace=filename')
  • 在文件名/urls中.py作为“从文件名导入*”,在URLconf下作为“urlpatterns = patterns('filename.views' ...
  • 在 views.py 为“从文件名.模型导入*”

我已经运行'heroku运行pythonmanage.pysyncdb'在venv以及它仍然返回错误错误:没有模块命名文件名。

共有3个答案

澹台文博
2023-03-14

你在 /venv吗?我在忘记进入虚拟环境后遇到了类似的错误。要从终端执行此操作,请尝试:

$Source venv/bin/激活

孔星宇
2023-03-14

我有一个用于转储所有Django模块路径的例程。re。sub()s</code>的存在只是为了缩短一些路径,并更容易看到哪里是什么。

import sys, re, os

def ModuleList():
    ret = []
    dir_project = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
    project_name = os.path.basename(dir_project)

    for k,v in sys.modules.items():

        x = str(v)
        if 'built-in' in x:
            ret.append((k, 'built-in'))
            continue

        m = re.search(r"^.*?'(?P<module>.*?)' from '(?P<file>.*?)'.*$", x)
        if m:
            d = m.groupdict()
            f = d['file']
            f = re.sub(r'/usr/local/lib/python[.0-9]*/site-packages/django/', 'system django >> ', f)
            f = re.sub(r'/usr/local/lib/python[.0-9]*/site-packages/', 'site-packages >> ', f)
            f = re.sub(r'/usr/local/lib/python[.0-9]*/', 'python >> ', f)
            f = re.sub(dir_project+'.*django/', 'local django >> ', f)
            f = re.sub(dir_project+r'(/\.\./)?', project_name + ' >> ', f)
            ret.append((d['module'], f))
    ret.sort( lambda a,b: cmp(a[0].lower(), b[0].lower()) )
    return ret
# ModuleList

if __name__ == "__main__":
    for x in ModuleList():
        print "%s\t%s" % (x[0], x[1])

金理
2023-03-14

我认为这行

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

正在给出问题。projectname部分IMHO不应该在那里,所以该行应该是

from filename.models import *

[编辑]

而且,projectname文件名都应该位于 中。

并解释更多关于我的想法。您的<code>项目名称。filename</code>指的是内部的<code>projectname</code>文件夹,所以我认为它正在尝试查找<code<projectname/projectname/filename。py文件不存在。只需将filename添加到INSTALLED_APPS即可使作用域全局可用,因此可以按原样引用。

 类似资料:
  • 我不能使用任何库因为我总是得到这个错误 我装了好几次模块还是不行 (最近一次的最后一次调用最后一次):文件”/(最近最近一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的最后一次的调用):这次的

  • 问题内容: 运行此代码时,我尝试通过Windows 10上的Pycharm IDE使用matplotlib软件包: 我收到以下错误: 我知道在python 2.x中它叫做Tkinter,但这不是问题-我刚安装了一个全新的python 3.5.1。 编辑:此外,我还尝试导入’tkinter’和’Tkinter’-这些都不起作用(都返回了我提到的错误消息)。 问题答案: 然后, 编辑 : 对于Wind

  • 我尝试在Windows10上通过Pycharm IDE使用matplotlib包。当我运行以下代码时: 出现以下错误: 我知道在Python2.x中它被称为Tkinter,但这不是问题所在--我刚刚安装了一个全新的Python3.5.1。 编辑:此外,我还尝试导入'tkinter'和'tkinter'-这两个都不起作用(都返回了我提到的错误消息)。

  • 问题内容: 我正在尝试为django项目设置PostgreSQL数据库,由于对上一个问题的答复,我相信我现在已经完成了。为django项目设置postgreSQL数据库时遇到了问题。我现在正在尝试在终端中运行命令’python manage.py runserver’来启动我的本地主机,但是当我运行该命令时,我看到此响应… 我不确定这是什么意思-我曾尝试下载psycopg2,但似乎找不到使用自制软

  • 我刚刚安装了keras,是新的。我正在运行windows,通过pip,python3.6安装了tenstorflow。试图运行“从keras.models导入顺序”,并得到这个错误。有什么想法吗?

  • 我正在尝试导入几个我知道已安装的模块,但我收到了ModuleNotFoundError:没有名为“error”的模块。 你能告诉我如何解决这个问题吗?