【问题标题】:Cannot importe module in a folder created mannually无法在手动创建的文件夹中导入模块
【发布时间】:2017-06-11 08:57:30
【问题描述】:

我来自 Rails,并开始使用 Django 项目。

我想创建一个文件夹服务(如 rails 服务),其中将包含从 API 消费并保存在我们的数据库中检索到的数据的类,实际上,这些是有时每天执行的作业。

我在 app.xml 中手动创建了一个名为 services 的文件夹。 结构:

- root
  - app
    - services
      - job_1.py
    - migrations
    __init__.py 
    models.py
    apps.py
    ...

我手动创建了文件夹并添加了一个文件调用 job_1。

问题是我需要从 job_1.py 导入模型,但我不能,因为我收到错误消息:“ImportError: No module named app.models” 请注意,我尝试从迁移中导入模型,没有问题。

两个问题:

1- 手动创建文件夹服务是否正确? (我加了__init__.py

2- 为什么会出现此错误?我该如何解决?

【问题讨论】:

  • 可能相关的问题:stackoverflow.com/questions/4383571/…
  • 我已经看过了,不过没用。
  • 即使是服务模块也需要有init.py,只有这样python才会把它当作包含job_1包的目录。最初在 shell 中尝试,它应该可以工作。

标签: python django


【解决方案1】:

我会尝试以下两件事:

  1. 确保services 目录中有__init__.py 并且
  2. 试试from __future__ import absolute_imports

    基本上,您可能会遇到一个问题,即您尝试“从一个包中导入一个模块,而该模块从该包中导入另一个子模块”。

【讨论】:

  • 1- 我手动创建了 init.py(我的意思是创建一个新的空文件并命名)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多