【问题标题】:How importing actually works in python?导入在 python 中实际上是如何工作的?
【发布时间】:2020-06-22 11:47:49
【问题描述】:

在我的工作目录中,我有这样的 python3 文件

/Path/to/cwd/main.py
/Path/to/cwd/Folder/one.py
/Path/to/cwd/Folder/two.py

所以我有一个这样的 main.py 文件

import Folder.one as one
#Do something

在 one.py 中我有这样的代码

import two
#Some functions defined locally utilizing functions written in two.py
if __name__ == '__main__':
    #Code for testing Functions

当我运行 one.py 时,它运行良好。但是当我运行 main.py 时,它会抛出一个错误

ModuleNotFoundError: 没有名为“两个”的模块

理想情况下,我根本不会期待这样的错误。

当我将 import 语句从 import two 更改为 import Folder.two 时,它起作用了。但我想以其他方式做到这一点,而不会对此类导入语句产生太大影响。如何做到这一点?

【问题讨论】:

    标签: python python-3.x import python-import importerror


    【解决方案1】:

    为了让 python 解释器知道哪些目录包含要加载的代码,您需要包含一个__init__.py 文件。

    查看this answer 以了解有关如何导入包的更多信息。

    在第二次导入的情况下,要访问该方法,您需要使用此语法。

    from .two import *

    【讨论】:

    • 我的python版本是3.6.9,我的python版本不需要它。不管怎样,我试过了,但没有用。
    • 正如我所说,错误位于 one.py 中的 import two 而不是 main.py 文件中
    • 我已经在一些帮助下编辑了答案,请查看 this article 以了解有关相对导入的更多信息
    猜你喜欢
    • 2019-06-20
    • 2021-01-21
    • 2011-09-27
    • 2021-12-16
    • 2013-03-14
    • 2021-03-23
    • 2011-02-11
    • 2017-07-31
    • 1970-01-01
    相关资源
    最近更新 更多