【问题标题】:What does mean from . import?从 是什么意思。进口?
【发布时间】:2019-04-21 09:58:09
【问题描述】:

您好,我正在将 Django 与 Python 一起使用,但我不明白这一点:

from . import views

我想知道我在输入时导入的内容。

感谢您的解释

【问题讨论】:

  • 你将view.py文件导入到import语句所在文件的同一目录下。
  • @WillemVanOnsem:这样描述会传播这样一种误解,即相对导入是关于目录的,而实际上它们是关于包的。有非常重要的区别;例如,如果我在同一个目录中有文件a.pyb.py 并且我运行python a.pya.py 不能执行from . import b,因为a.pyb.py 不是a 的子模块通用包。
  • from . import XXXX的可能重复

标签: python django python-3.x python-2.7


【解决方案1】:

您从调用 import 语句的 python 脚本的位置导入 views.py。

【讨论】:

  • 没有。如果你写import views,你指定一个“绝对路径”,所以它是PYTHON_PATH中的views.py.是一个相对路径
【解决方案2】:

您可以使用相对绝对路径导入文件、模块和包。

看看这个项目:

-- project_folder
    --project_name
        ──settings.py
        ──init.py
        ──urls.py
        ──wsgi.py
    --app1
        ──__init__.py
        ── models.py
        ── views.py
        ── admin.py
        -- package1_folder
            ── hello_world.py

相对导入用于检索相对于当前路径的资源。

因此,如果您当前在 app1 -> views.py 中工作,并且您想将 hello_world.py 导入到您的视图中,您可以使用 . 指定对您正在处理的当前文件的相对导入。

所以要导入hello_world.py,我们可以使用from .package1_folder import hello_world

如果您只指定from . import models,则您正在从您所在的当前文件夹(app1)导入 models.py 资源。

另一方面,绝对导入用于使用完整路径从项目中的任何位置导入资源。

例如,您可以在项目中的任何位置使用from app1.package1_folder import hello_world,您将成功导入文件。

【讨论】:

    【解决方案3】:

    从同一目录导入, “..”表示从上层目录导入

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多